Next: Option Cross Key, Up: Invocation [Contents][Index]
Bison¤Ï¡¢ÅÁÅýŪ¤Ê1ʸ»ú¤Î¥ª¥×¥·¥ç¥ó¤È¡¢µ²±¤·¤ä¤¹¤¤Ä¹¤¤¥ª¥×¥·¥ç¥ó̾¤Î ξÊý¤ò¼õ¤±ÉÕ¤±¤Þ¤¹¡£Ä¹¤¤¥ª¥×¥·¥ç¥ó̾¤Ï¡¢‘-’¤ÎÂå¤ï¤ê¤Ë¡¢ ‘--’¤Ç»ØÄꤷ¤Þ¤¹¡£ °ì°ÕÀ¤ò¼º¤ï¤Ê¤¤ÈϰϤǡ¢Ä¹¤¤¥ª¥×¥·¥ç¥ó̾¤ò¾Êά¤Ç¤¤Þ¤¹¡£ Ť¤¥ª¥×¥·¥ç¥ó¤¬°ú¿ô¤ò¤È¤â¤Ê¤¦¾ì¹ç¡¢¤¿¤È¤¨¤Ð¡¢‘--file-prefix’¤Ç¤Ï¡¢ ¥ª¥×¥·¥ç¥ó̾¤È°ú¿ô¤Î´Ö¤Ë‘=’¤òÆþ¤ì¤Þ¤¹¡£
Bison¤ËÂФ·¤Æ»ØÄê²Äǽ¤Ê¥ª¥×¥·¥ç¥ó¤Î°ìÍ÷¤ò¡¢¥¢¥ë¥Õ¥¡¥Ù¥Ã¥È½ç¤Ë¼¨¤·¤Þ¤¹¡£ ¤µ¤é¤Ë¡¢Ä¹¤¤Ì¾Á°¤Î¥¢¥ë¥Õ¥¡¥Ù¥Ã¥È½ç¤ÎÂбþ¤ò¼¨¤·¤Þ¤¹¡£
Bison¤¬À¸À®¤¹¤ë¤¹¤Ù¤Æ¤Î¥Õ¥¡¥¤¥ë¤Î̾Á°¤ÎÁ°È¾Éôʬ¤ò»ØÄꤷ¤Þ¤¹¡£ ÆþÎϤµ¤ì¤ëʸˡ¥Õ¥¡¥¤¥ë¤Î̾Á°¤¬prefix.y¤Ç¤¢¤Ã¤¿¾ì¹ç¤È¡¢ Ʊ¤¸·ë²Ì¤òÆÀ¤é¤ì¤Þ¤¹¡£
ʸˡ¥Õ¥¡¥¤¥ëÃæ¤ÇÄêµÁ¤µ¤ì¤¿¥È¡¼¥¯¥ó·¿Ì¾¤ËÂФ¹¤ë¥Þ¥¯¥íÄêµÁ¡¢
°ÕÌ£ÃÍ·¿YYSTYPE
¡¢¤¤¤¯¤Ä¤«¤Îextern
ÊÑ¿ôÀë¸À¤ò´Þ¤à¡¢
ÄɲäνÐÎÏ¥Õ¥¡¥¤¥ë¤òÀ¸À®¤·¤Þ¤¹¡£
À¸À®¤µ¤ì¤ë¹½Ê¸²òÀÏ¥Õ¥¡¥¤¥ë¤Î̾Á°¤¬name.c¤Ê¤é¤Ð¡¢ ¤³¤Î¥Õ¥¡¥¤¥ë¤Î̾Á°¤Ïname.h¤Ë¤Ê¤ê¤Þ¤¹¡£
yylex
´Ø¿ô¤òÆÈΩ¤Ê¥½¡¼¥¹¥Õ¥¡¥¤¥ë¤ÎÃæ¤ÇÄêµÁ¤·¤Æ¤¤¤ë¤Ê¤é¤Ð¡¢
¤½¤ì¤Ï¥È¡¼¥¯¥ó·¿ÈÖ¹æ¤ÈÊÑ¿ôyylval
¤òɬÍפȤ¹¤ë¤Î¤Ç¡¢
¤³¤Î¥Õ¥¡¥¤¥ë¤ò#include
¤¹¤ëɬÍפ¬¤¢¤ê¤Þ¤¹
See Semantic Values of Tokens¡£
¹½Ê¸²òÀÏ´ï¥Õ¥¡¥¤¥ë¤ÎÃæ¤Ë¡¢#line
¥×¥ê¥×¥í¥»¥Ã¥µ¥Ç¥£¥ì¥¯¥Æ¥£¥Ö¤òÀ¸À®¤·¤Þ¤»¤ó¡£
Ä̾Bison¤Ï¤³¤ì¤òÀ¸À®¤·¡¢C¥³¥ó¥Ñ¥¤¥é¤È¥Ç¥Ð¥Ã¥¬¤¬¡¢
ʸˡ¥Õ¥¡¥¤¥ë¤Î¤É¤³¤Ç¥¨¥é¡¼¤¬È¯À¸¤·¤¿¤«¤ò¸«¤Ä¤±¤ë¤¿¤á¤Ë»È¤¤¤Þ¤¹¡£
¤³¤Î¥ª¥×¥·¥ç¥ó¤Ï¡¢¥¨¥é¡¼¤È¹½Ê¸²òÀÏ´ï¤Î¹ÔÈÖ¹æ¤ò·ë¤ÓÉÕ¤±¡¢
¹½Ê¸²òÀÏ´ï¤òÆÈΩ¤Ê¥½¡¼¥¹¥Õ¥¡¥¤¥ë¤È¤·¤Æ°·¤¤¤Þ¤¹¡£
¹½Ê¸²òÀÏ´ï¤ËC¤Î¥×¥í¥°¥é¥à¤ò´Þ¤á¤º¡¢É½¤À¤±¤òÀ¸À®¤·¤Þ¤¹¡£
¹½Ê¸²òÀÏ´ï¥Õ¥¡¥¤¥ë¤Ï¡¢#define
¥Ç¥£¥ì¥¯¥Æ¥£¥Ö¤È
ÀÅŪÊÑ¿ô¤ÎÀë¸À¤Î¤ß¤«¤é¤Ê¤ê¤Þ¤¹¡£
¤³¤Î¥ª¥×¥·¥ç¥ó¤Ë¤è¤ê¡¢filename.act¤È¤¤¤¦Ì¾Á°¤Î¥Õ¥¡¥¤¥ë¤Ë¡¢
ʸˡ¥¢¥¯¥·¥ç¥ó¤ËÂФ¹¤ëC¸À¸ì¤Î¥×¥í¥°¥é¥à¤¬½ñ¤«¤ì¤Þ¤¹¡£
¤½¤Î½ñ¼°¤Ï¡¢switch
ʸ¤ËÂбþ¤¹¤ë¥Ö¥ì¡¼¥¹¤Ç°Ï¤Þ¤ì¤¿¥Ö¥í¥Ã¥¯¤Ç¤¹¡£
À¸À®¤µ¤ì¤ë¹½Ê¸²òÀÏ´ï¥Õ¥¡¥¤¥ë¤Î̾Á°¤ò»ØÄꤷ¤Þ¤¹¡£
¾¤Î½ÐÎÏ¥Õ¥¡¥¤¥ë¤Î¥Õ¥¡¥¤¥ë̾¤Î»ØÄê¤Ï ‘-v’¤È‘-d’¥ª¥×¥·¥ç¥ó¤Î¹à¤ò»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£
¹½Ê¸²òÀϴ郎»È¤¦³°Éô̾¤ò‘yy’¤Ç¤Ê¤¯prefix¤Ç»Ï¤Þ¤ë¤è¤¦¤ËÊѤ¨¤Þ¤¹¡£
±Æ¶Á¤ò¼õ¤±¤ë̾Á°¤Ï¡¢
yyparse
¡¢yylex
¡¢yyerror
¡¢yynerrs
¡¢
yylval
¡¢yychar
¡¢yydebug
¤Ç¤¹¡£
¤¿¤È¤¨¤Ð¡¢‘-p c’¥ª¥×¥·¥ç¥ó¤ò»ØÄꤹ¤ì¤Ð¡¢
̾Á°¤Ïcparse
¡¢clex
¤Ê¤É¤Ë¤Ê¤ê¤Þ¤¹¡£
%raw
¤¬»ØÄꤵ¤ì¤¿¤è¤¦¤Ë¿¶¤ëÉñ¤¤¤Þ¤¹¡£
See Decl Summary¡£
¥Ç¥Ð¥Ã¥°µ¡Ç½¤¬¥³¥ó¥Ñ¥¤¥ë¤µ¤ì¤ë¤è¤¦¤Ë¡¢
¥Þ¥¯¥íYYDEBUG
¤ÎÄêµÁ¤ò¹½Ê¸²òÀÏ´ï¥Õ¥¡¥¤¥ë¤ËÆþ¤ì¤Þ¤¹
See Debugging Your Parser¡£
¹½Ê¸²òÀÏ´ï¤Î¾õÂ֤ˤĤ¤¤Æ¤Î¾ÜºÙ¤ÊÀâÌÀ¤È¡¢ ¤½¤ì¤é¤Î¾õÂ֤Ǥ½¤ì¤¾¤ì¤ÎÀèÆÉ¤ß¥È¡¼¥¯¥ó¤¬¸½¤ì¤ë¤È²¿¤¬µ¯¤¤ë¤«µ½Ò¤·¤¿¡¢ ÄɲäΥե¡¥¤¥ë¤òÀ¸À®¤·¤Þ¤¹¡£
¤³¤Î¥Õ¥¡¥¤¥ë¤Ï¡¢±é»»»Ò¤ÎÍ¥Àè½ç°Ì¤Ë¤è¤Ã¤Æ²ò·è¤·¤¿¤â¤Î¤â²ò·è¤·¤Ê¤«¤Ã¤¿ ¤â¤Î¤â´Þ¤á¤Æ¡¢¾×ÆÍ¤Ë¤Ä¤¤¤Æ¤ÎÀâÌÀ¤ò´Þ¤ó¤Ç¤¤¤Þ¤¹¡£
À¸À®¤µ¤ì¤ë¥Õ¥¡¥¤¥ë¤Î̾Á°¤Ï¡¢¹½Ê¸²òÀÏ´ï¤Î¥Õ¥¡¥¤¥ë¤Î̾Á°¤«¤é¡¢ ‘.tab.c’¤Þ¤¿¤Ï‘.c’¤ò¼è¤ê½ü¤¤¤Æ¡¢ Âå¤ï¤ê¤Ë‘.output’¤òÉÕ¤±¤¿¤â¤Î¤Ç¤¹¡£
¤·¤¿¤¬¤Ã¤Æ¡¢ÆþÎϤÎʸˡ¥Õ¥¡¥¤¥ë¤Î̾Á°¤¬foo.y¤Ê¤é¤Ð¡¢ ÆÃ¤Ë»ØÄꤷ¤Ê¤¤¤È¡¢¹½Ê¸²òÀÏ´ï¥Õ¥¡¥¤¥ë¤Î̾Á°¤Ïfoo.tab.c¤Ë¤Ê¤ê¡¢ ¾ÜºÙ¤ÊÀâÌÀ¤Î¥Õ¥¡¥¤¥ë¤Î̾Á°¤Ïfoo.output¤Ë¤Ê¤ê¤Þ¤¹¡£
¥Ð¡¼¥¸¥ç¥óÈÖ¹æ¤òɽ¼¨¤·¤Æ¡¢Bison¤ò½ªÎ»¤µ¤»¤Þ¤¹¡£
¥³¥Þ¥ó¥É¥é¥¤¥ó¥ª¥×¥·¥ç¥ó¤ÎÍ×Ìó¤òɽ¼¨¤·¤Æ¡¢Bison¤ò½ªÎ»¤µ¤»¤Þ¤¹¡£
‘-o y.tab.c’¤ÈÅù²Á¤Ç¤¹¡£¹½Ê¸²òÀÏ´ï¥Õ¥¡¥¤¥ë¤Î̾Á°¤Ï y.tab.c¤Ë¤Ê¤ê¡¢Â¾¤Î½ÐÎÏ¥Õ¥¡¥¤¥ë¤Î̾Á°¤Ïy.output¤È y.tab.h¤Ë¤Ê¤ê¤Þ¤¹¡£¤³¤Î¥ª¥×¥·¥ç¥ó¤ÎÌÜŪ¤Ï¡¢ ½ÐÎÏ¥Õ¥¡¥¤¥ë¤Î̾Á°¤òYacc¤Ë¹ç¤ï¤»¤ë¤³¤È¤Ç¤¹¡£ ¼¡¤Î¥·¥§¥ë¥¹¥¯¥ê¥×¥È¤Ï¡¢Yacc¤ÎÂåÍѤˤʤê¤Þ¤¹¡£
bison -y $*