Next: C++ Support, Previous: Program variables, Up: Programs [Contents][Index]
Automake¤ÏYacc¤ÈLex¤ËÂФ·¤Æ´öʬÆÃ°Û¤Ê¥µ¥Ý¡¼¥È¤ò¹Ô¤Ê¤¤¤Þ¤¹¡¥
Automake¤Ï¡¤yacc
(¤¢¤ë¤¤¤Ïlex
)¤Ë¤è¤Ã¤ÆÀ¸À®¤µ¤ì¤¿.c
¥Õ¥¡¥¤¥ë¤¬¡¤ÆþÎÏ¥Õ¥¡¥¤¥ë¤Î¥Ù¡¼¥¹Ì¾¤ò»ÈÍѤ·¤ÆÌ¿Ì¾¤µ¤ì¤Æ¤¤¤ë¤È²¾Äꤷ¤Þ¤¹¡¥
¤¹¤Ê¤ï¤Á¡¤yacc¥½¡¼¥¹¥Õ¥¡¥¤¥ëfoo.y¤ËÂФ·¤Æ¡¤Automake¤ÏÃæ´Ö¥Õ¥¡¥¤
¥ë¤ò(¤è¤êÅÁÅýŪ¤Êy.tab.c¤Ç¤Ï¤Ê¤¯)foo.c¤È̿̾¤·¤Þ¤¹¡¥
yacc¥½¡¼¥¹¥Õ¥¡¥¤¥ë¤Î³ÈÄ¥»Ò¤Ï¡¤·ë²Ì¤È¤·¤ÆÀ¸¤¸¤ë‘C’¤¢¤ë¤¤¤Ï ‘C++’ ¥Õ¥¡¥¤¥ë¤Î³ÈÄ¥»Ò¤ò·èÄꤹ¤ë¤¿¤á¤Ë»ÈÍѤµ¤ì¤Þ¤¹¡¥¥Õ¥¡¥¤¥ë¤Î³È Ä¥»Ò¤¬‘.y’¤Î¾ì¹ç¤Ï‘.c’¤Ë¤Ê¤ê¤Þ¤¹¡¥Æ±Íͤˑ.yy’¤Ï ‘.cc’¤Ë¡¤‘.y++’¤Ï‘c++’¤Ë¡¤¤½¤·¤Æ‘.yxx’¤Ï ‘.cxx’¤Ë¤Ê¤ê¤Þ¤¹¡¥
ƱÍͤˡ¤lex¥½¡¼¥¹¥Õ¥¡¥¤¥ë¤Ï¡¤‘C’¤ä‘C++’¤òÀ¸À®¤¹¤ë¤¿¤á¤Ë»ÈÍÑ ¤¹¤ë¤³¤È¤¬²Äǽ¤Ç¤¹¡¥³ÈÄ¥»Ò¤Î‘.l’¡¤‘.ll’¡¤‘.l++’¡¤¤½¤·¤Æ ‘.lxx’¤¬Ç§¼±¤µ¤ì¤Þ¤¹¡¥
¤¢¤é¤æ¤ë‘SOURCES’ÊÑ¿ô¤Ë¡¤(‘C’¤ä‘C++’¤Î)Ãæ´ÖŪ¤Ê¥Õ¥¡¥¤¥ë ¤òÌÀ¼¨Åª¤Ë½ñ¤¤¤Æ¤Ï¤¤¤±¤Þ¤»¤ó¡¥¥½¡¼¥¹¥Õ¥¡¥¤¥ë¤À¤±¤ò¥ê¥¹¥È¥¢¥Ã¥×¤·¤Þ¤¹¡¥
yacc
(¤¢¤ë¤¤¤Ïlex
)¤Ë¤è¤Ã¤ÆÀ¸À®¤µ¤ëÃæ´ÖŪ¤Ê¥Õ¥¡¥¤¥ë¤Ï¡¤ºî
À®¤µ¤ì¤ë¤¹¤Ù¤Æ¤ÎÇÛÉÛʪ¤Ë´Þ¤á¤é¤ì¤Þ¤¹¡¥¤½¤Î¤¿¤á¥æ¡¼¥¶¤¬yacc
¤ä
lex
¤ò»ý¤Ã¤Æ¤¤¤ëɬÍפ¬¤¢¤ê¤Þ¤»¤ó¡¥
yacc
¥½¡¼¥¹¥Õ¥¡¥¤¥ë¤¬¸«¤Ä¤«¤Ã¤¿¾ì¹ç¡¤configure.ac¤ÇÊÑ¿ô
‘YACC’¤òÄêµÁ¤¹¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡¥¤³¤ì¤Ï¡¤¥Þ¥¯¥í‘AC_PROG_YACC’
¤ò¸Æ¤Ó½Ð¤¹¤³¤È¤ÇºÇ¤âÍÆ°×¤Ë¹Ô¤Ê¤¨¤Þ¤¹(see Particular Program Checks in The Autoconf Manual)¡¥
yacc
¤¬¸Æ¤Ó½Ð¤µ¤ì¤¿»þ¡¤‘YFLAGS’¤È‘AM_YFLAGS’¥Õ¥é¥°¤¬ÅÏ
¤µ¤ì¤Þ¤¹¡¥Á°¼Ô¤Ï¥æ¡¼¥¶ÊÑ¿ô¤Ç¡¤¸å¼Ô¤ÏMakefile.am¤ÎÃø¼Ô¤Î¤¿¤á¤Î¤â
¤Î¤Ç¤¹¡¥
‘AM_YFLAGS’¤ÏÄ̾-d
¥ª¥×¥·¥ç¥ó¤òyacc
¤ËÅϤ¹¤È¤»ÈÍÑ
¤µ¤ì¤Þ¤¹¡¥Automake¤Ï¤³¤ì¤¬°ÕÌ£¤¹¤ë¤È¤³¤í¤òÃΤäƤ¤¤Æ¡¤yacc -d
¤Ç
¥Ó¥ë¥É¤µ¤ì¤ë¥Ø¥Ã¥À¥Õ¥¡¥¤¥ë¤Î¹¹¿·¤ÈÇÛÉۤΥ롼¥ë¤ò¡¤¼«Æ°Åª¤ËÄ´À°¤·¤Þ¤¹¡¥
¤·¤«¤·¡¤Automake¤¬Ê¬¤«¤é¤Ê¤¤¤â¤Î¤Ï¡¤¤³¤Î¥Ø¥Ã¥À¤¬»ÈÍѤµ¤ì¤ë¾ì½ê¤Ç¤¹¡¥¥Ø¥Ã
¥À¤¬ºÇ½é¤Ë»ÈÍѤµ¤ì¤ëÁ°¤Ë¥Ø¥Ã¥À¤ò¥Ó¥ë¥É¤·¤Æ¤ª¤¯¤³¤È¤Ï¤¢¤Ê¤¿¤ÎÀÕǤ¤Ç¤¹¡¥
Ä̾盧¤ì¤Ï¡¤¥Ø¥Ã¥À¤¬Â¾¤Î¥Õ¥¡¥¤¥ë¤«¤é¥¤¥ó¥¯¥ë¡¼¥É¤µ¤ì¤Æ¤¤¤ë¤È¤¡¤°Í¸À
¤ÎÄÉÀפ¬Æ°ºî¤¹¤ë¤¿¤á¤ËɬÍפȤʤê¤Þ¤¹¡¥°ìÈÌŪ¤Ê²ò·èºö¤Ï¡¤¥Ø¥Ã¥À¥Õ¥¡¥¤¥ë
¤ò°Ê²¼¤Î¤è¤¦¤ËBUILT_SOURCES
(see Sources)¤Ë¥ê¥¹¥È¥¢¥Ã¥×¤¹¤ë
¤³¤È¤Ç¤¹¡¥
BUILT_SOURCES = parser.h AM_YFLAGS = -d bin_PROGRAMS = foo foo_SOURCES = … parser.y …
ƱÍͤˡ¤lex
¥½¡¼¥¹¥Õ¥¡¥¤¥ë¤¬¤¢¤ë¾ì¹ç¡¤configure.ac¤ÇÊÑ¿ô
‘LEX’¤òÄêµÁ¤¹¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡¥¤³¤¦¤¹¤ë¤¿¤á¤Ë‘AC_PROG_LEX’¤ò
»ÈÍѤ¹¤ë¤³¤È¤¬²Äǽ¤Ç¤¹¤¬(see Particular
Program Checks in The Autoconf Manual)¡¤AM_PROG_LEX
¥Þ
¥¯¥í(see Macros)¤Î»ÈÍѤò¿ä¾©¤·¤Þ¤¹¡¥
lex
¤¬¸Æ¤Ó½Ð¤µ¤ì¤¿¤È¤¡¤‘LFLAGS’¤È‘AM_LFLAGS’¥Õ¥é¥°¤¬
ÅϤµ¤ì¤Þ¤¹¡¥Á°¼Ô¤Ï¥æ¡¼¥¶ÊÑ¿ô¤Ç¡¤¸å¼Ô¤ÏMakefile.am¤ÎÃø¼Ô¤Î¤¿¤á¤Î
¤â¤Î¤Ç¤¹¡¥
Automake¤Ç¡¤°ì¤Ä¤Î¥×¥í¥°¥é¥à¤ËÊ£¿ô¤Îyacc
(¤Þ¤¿¤Ïlex
)¥½¡¼
¥¹¥Õ¥¡¥¤¥ë¤ò´Þ¤á¤ë¤³¤È¤¬²Äǽ¤Ë¤Ê¤ê¤Þ¤¹¡¥¥Ç¥£¥ì¥¯¥È¥ê¤Ë°ì¤Ä°Ê¾å¤Î°Û¤Ê¤ë
yacc
(¤Þ¤¿¤Ïlex
)¤Î¥½¡¼¥¹¥Õ¥¡¥¤¥ë¤¬¤¢¤ë¤È¤¡¤Automake¤Ï¡¤
¥µ¥Ö¥Ç¥£¥ì¥¯¥È¥ê¤Çyacc
(¤Þ¤¿¤Ïlex
)¤ò¼Â¹Ô¤¹¤ë¤¿¤á¤Ë¡¤
ylwrap
¤È¸Æ¤Ð¤ì¤ë¾®¤µ¤¤¥×¥í¥°¥é¥à¤ò»ÈÍѤ·¤Þ¤¹¡¥¤³¤ì¤¬É¬Íפˤʤë
¤Î¤Ï¡¤yacc¤Î½ÐÎÏ¥Õ¥¡¥¤¥ë̾¤¬¸ÇÄꤵ¤ì¤Æ¤¤¤Æ¡¤ÊÂÎóŪ¤Êmake¤Çyacc
¤Î°ì¤Ä°Ê¾å¤Î¥¤¥ó¥¹¥¿¥ó¥¹¤òƱ»þ¤Ë¸Æ¤Ó½Ð¤¹²ÄǽÀ¤¬¤¢¤ë¤¿¤á¤Ç¤¹¡¥
ylwrap
¥×¥í¥°¥é¥à¤Ï¡¤Automake¤È°ì½ï¤ËÇÛÉÛ¤µ¤ì¤Þ¤¹¡¥¤½¤ì¤Ï
‘AC_CONFIG_AUX_DIR’¤¬»ØÄꤹ¤ë¥Ç¥£¥ì¥¯¥È¥ê (see Finding ‘configure’ Input in The Autoconf Manual)¡¤¤Þ¤¿¤Ï¡¤¤½
¤Î¥Þ¥¯¥í¤¬configure.ac¤Ç»ÈÍѤµ¤ì¤Æ¤¤¤Ê¤¤¾ì¹ç¤Ï¥«¥ì¥ó¥È¥Ç¥£¥ì¥¯
¥È¥ê¤Ë¤¢¤ê¤Þ¤¹¡¥
yacc
¤ËÂФ·¤Æ¤Ï¡¤´Êñ¤Ê¥í¥Ã¥¯¤Ç¤Î´ÉÍý¤ÏÉÔ½½Ê¬¤Ç¤¹¡¥yacc
¤Î
½ÐÎϤϡ¤ÆâÉô¤Ç¾ï¤ËƱ¤¸¥·¥ó¥Ü¥ë̾¤ò»È¤¦¤Î¤Ç¡¤Æ±¤¸¼Â¹Ô·Á¼°¤ÎÃæ¤ËÆó¤Ä¤Î
yacc
¥Ñ¡¼¥µ¡¼¤ò¥ê¥ó¥¯¤¹¤ë¤ÏÉÔ²Äǽ¤Ç¤¹¡¥
gdb
¤Ç¤Ï¡¤»ÈÍѤ¹¤ë̾Á°¤ò°Ê²¼¤Î¤è¤¦¤ËÊѹ¹¤·¤Æ¤¯¤À¤µ¤¤¡¥
#define yymaxdepth c_maxdepth #define yyparse c_parse #define yylex c_lex #define yyerror c_error #define yylval c_lval #define yychar c_char #define yydebug c_debug #define yypact c_pact #define yyr1 c_r1 #define yyr2 c_r2 #define yydef c_def #define yychk c_chk #define yypgo c_pgo #define yyact c_act #define yyexca c_exca #define yyerrflag c_errflag #define yynerrs c_nerrs #define yyps c_ps #define yypv c_pv #define yys c_s #define yy_yys c_yys #define yystate c_state #define yytmp c_tmp #define yyv c_v #define yy_yyv c_yyv #define yyval c_val #define yylloc c_lloc #define yyreds c_reds #define yytoks c_toks #define yylhs c_yylhs #define yylen c_yylen #define yydefred c_yydefred #define yydgoto c_yydgoto #define yysindex c_yysindex #define yyrindex c_yyrindex #define yygindex c_yygindex #define yytable c_yytable #define yycheck c_yycheck #define yyname c_yyname #define yyrule c_yyrule
¤½¤ì¤¾¤ì¤ÎÄêµÁ¤ËÂФ·¤Æ¡¤‘c_’ÀÜÆ¬¼¤Ï¹¥¤ß¤Î¤â¤Î¤ËÃÖ¤´¹¤¨¤Æ²¼¤µ¤¤¡¥
¤³¤ì¤é¤Ï¡¤bison
¡¤byacc
¡¤¤½¤·¤ÆÅÁÅýŪ¤Êyacc
¤ËÂФ¹
¤ëưºî¤òÄêµÁ¤·¤Þ¤¹¡¥¥Ñ¡¼¥µ¥¸¥§¥Í¥ì¡¼¥¿¤¬¡¤¤³¤³¤Ç¥«¥Ð¡¼¤µ¤ì¤Æ¤¤¤Ê¤¤¥·¥ó
¥Ü¥ë¤ò»ÈÍѤ·¤Æ¤¤¤ë¤³¤È¤¬Ê¬¤«¤Ã¤¿¾ì¹ç¡¤¥ê¥¹¥È¤Ë²Ã¤¨¤ë¤³¤È¤¬¤Ç¤¤ë¤è¤¦¤Ë¡¤
¿·¤·¤¤Ì¾Á°¤òÊó¹ð¤·¤Æ¤¯¤À¤µ¤¤¡¥