Next: , Up: Invocation   [Contents][Index]


9.1 Bison¤Î¥ª¥×¥·¥ç¥ó

Bison¤Ï¡¢ÅÁÅýŪ¤Ê1ʸ»ú¤Î¥ª¥×¥·¥ç¥ó¤È¡¢µ­²±¤·¤ä¤¹¤¤Ä¹¤¤¥ª¥×¥·¥ç¥ó̾¤Î ξÊý¤ò¼õ¤±ÉÕ¤±¤Þ¤¹¡£Ä¹¤¤¥ª¥×¥·¥ç¥ó̾¤Ï¡¢‘-’¤ÎÂå¤ï¤ê¤Ë¡¢ ‘--’¤Ç»ØÄꤷ¤Þ¤¹¡£ °ì°ÕÀ­¤ò¼º¤ï¤Ê¤¤ÈϰϤǡ¢Ä¹¤¤¥ª¥×¥·¥ç¥ó̾¤ò¾Êά¤Ç¤­¤Þ¤¹¡£ Ť¤¥ª¥×¥·¥ç¥ó¤¬°ú¿ô¤ò¤È¤â¤Ê¤¦¾ì¹ç¡¢¤¿¤È¤¨¤Ð¡¢‘--file-prefix’¤Ç¤Ï¡¢ ¥ª¥×¥·¥ç¥ó̾¤È°ú¿ô¤Î´Ö¤Ë‘=’¤òÆþ¤ì¤Þ¤¹¡£

Bison¤ËÂФ·¤Æ»ØÄê²Äǽ¤Ê¥ª¥×¥·¥ç¥ó¤Î°ìÍ÷¤ò¡¢¥¢¥ë¥Õ¥¡¥Ù¥Ã¥È½ç¤Ë¼¨¤·¤Þ¤¹¡£ ¤µ¤é¤Ë¡¢Ä¹¤¤Ì¾Á°¤Î¥¢¥ë¥Õ¥¡¥Ù¥Ã¥È½ç¤ÎÂбþ¤ò¼¨¤·¤Þ¤¹¡£

-b file-prefix
--file-prefix=prefix

Bison¤¬À¸À®¤¹¤ë¤¹¤Ù¤Æ¤Î¥Õ¥¡¥¤¥ë¤Î̾Á°¤ÎÁ°È¾Éôʬ¤ò»ØÄꤷ¤Þ¤¹¡£ ÆþÎϤµ¤ì¤ëʸˡ¥Õ¥¡¥¤¥ë¤Î̾Á°¤¬prefix.y¤Ç¤¢¤Ã¤¿¾ì¹ç¤È¡¢ Ʊ¤¸·ë²Ì¤òÆÀ¤é¤ì¤Þ¤¹¡£

-d
--defines

ʸˡ¥Õ¥¡¥¤¥ëÃæ¤ÇÄêµÁ¤µ¤ì¤¿¥È¡¼¥¯¥ó·¿Ì¾¤ËÂФ¹¤ë¥Þ¥¯¥íÄêµÁ¡¢ °ÕÌ£ÃÍ·¿YYSTYPE¡¢¤¤¤¯¤Ä¤«¤ÎexternÊÑ¿ôÀë¸À¤ò´Þ¤à¡¢ ÄɲäνÐÎÏ¥Õ¥¡¥¤¥ë¤òÀ¸À®¤·¤Þ¤¹¡£

À¸À®¤µ¤ì¤ë¹½Ê¸²òÀÏ¥Õ¥¡¥¤¥ë¤Î̾Á°¤¬name.c¤Ê¤é¤Ð¡¢ ¤³¤Î¥Õ¥¡¥¤¥ë¤Î̾Á°¤Ïname.h¤Ë¤Ê¤ê¤Þ¤¹¡£

yylex´Ø¿ô¤òÆÈΩ¤Ê¥½¡¼¥¹¥Õ¥¡¥¤¥ë¤ÎÃæ¤ÇÄêµÁ¤·¤Æ¤¤¤ë¤Ê¤é¤Ð¡¢ ¤½¤ì¤Ï¥È¡¼¥¯¥ó·¿ÈÖ¹æ¤ÈÊÑ¿ôyylval¤òɬÍפȤ¹¤ë¤Î¤Ç¡¢ ¤³¤Î¥Õ¥¡¥¤¥ë¤ò#include¤¹¤ëɬÍפ¬¤¢¤ê¤Þ¤¹ See Semantic Values of Tokens¡£

-l
--no-lines

¹½Ê¸²òÀÏ´ï¥Õ¥¡¥¤¥ë¤ÎÃæ¤Ë¡¢#line¥×¥ê¥×¥í¥»¥Ã¥µ¥Ç¥£¥ì¥¯¥Æ¥£¥Ö¤òÀ¸À®¤·¤Þ¤»¤ó¡£ Ä̾Bison¤Ï¤³¤ì¤òÀ¸À®¤·¡¢C¥³¥ó¥Ñ¥¤¥é¤È¥Ç¥Ð¥Ã¥¬¤¬¡¢ ʸˡ¥Õ¥¡¥¤¥ë¤Î¤É¤³¤Ç¥¨¥é¡¼¤¬È¯À¸¤·¤¿¤«¤ò¸«¤Ä¤±¤ë¤¿¤á¤Ë»È¤¤¤Þ¤¹¡£ ¤³¤Î¥ª¥×¥·¥ç¥ó¤Ï¡¢¥¨¥é¡¼¤È¹½Ê¸²òÀÏ´ï¤Î¹ÔÈÖ¹æ¤ò·ë¤ÓÉÕ¤±¡¢ ¹½Ê¸²òÀÏ´ï¤òÆÈΩ¤Ê¥½¡¼¥¹¥Õ¥¡¥¤¥ë¤È¤·¤Æ°·¤¤¤Þ¤¹¡£

-n
--no-parser

¹½Ê¸²òÀÏ´ï¤ËC¤Î¥×¥í¥°¥é¥à¤ò´Þ¤á¤º¡¢É½¤À¤±¤òÀ¸À®¤·¤Þ¤¹¡£ ¹½Ê¸²òÀÏ´ï¥Õ¥¡¥¤¥ë¤Ï¡¢#define¥Ç¥£¥ì¥¯¥Æ¥£¥Ö¤È ÀÅŪÊÑ¿ô¤ÎÀë¸À¤Î¤ß¤«¤é¤Ê¤ê¤Þ¤¹¡£

¤³¤Î¥ª¥×¥·¥ç¥ó¤Ë¤è¤ê¡¢filename.act¤È¤¤¤¦Ì¾Á°¤Î¥Õ¥¡¥¤¥ë¤Ë¡¢ ʸˡ¥¢¥¯¥·¥ç¥ó¤ËÂФ¹¤ëC¸À¸ì¤Î¥×¥í¥°¥é¥à¤¬½ñ¤«¤ì¤Þ¤¹¡£ ¤½¤Î½ñ¼°¤Ï¡¢switchʸ¤ËÂбþ¤¹¤ë¥Ö¥ì¡¼¥¹¤Ç°Ï¤Þ¤ì¤¿¥Ö¥í¥Ã¥¯¤Ç¤¹¡£

-o outfile
--output-file=outfile

À¸À®¤µ¤ì¤ë¹½Ê¸²òÀÏ´ï¥Õ¥¡¥¤¥ë¤Î̾Á°¤ò»ØÄꤷ¤Þ¤¹¡£

¾¤Î½ÐÎÏ¥Õ¥¡¥¤¥ë¤Î¥Õ¥¡¥¤¥ë̾¤Î»ØÄê¤Ï ‘-v’¤È‘-d’¥ª¥×¥·¥ç¥ó¤Î¹à¤ò»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£

-p prefix
--name-prefix=prefix

¹½Ê¸²òÀϴ郎»È¤¦³°Éô̾¤ò‘yy’¤Ç¤Ê¤¯prefix¤Ç»Ï¤Þ¤ë¤è¤¦¤ËÊѤ¨¤Þ¤¹¡£ ±Æ¶Á¤ò¼õ¤±¤ë̾Á°¤Ï¡¢ yyparse¡¢yylex¡¢yyerror¡¢yynerrs¡¢ yylval¡¢yychar¡¢yydebug¤Ç¤¹¡£

¤¿¤È¤¨¤Ð¡¢‘-p c’¥ª¥×¥·¥ç¥ó¤ò»ØÄꤹ¤ì¤Ð¡¢ ̾Á°¤Ïcparse¡¢clex¤Ê¤É¤Ë¤Ê¤ê¤Þ¤¹¡£

See Multiple Parsers in the Same Program¡£

-r
--raw

%raw¤¬»ØÄꤵ¤ì¤¿¤è¤¦¤Ë¿¶¤ëÉñ¤¤¤Þ¤¹¡£ See Decl Summary¡£

-t
--debug

¥Ç¥Ð¥Ã¥°µ¡Ç½¤¬¥³¥ó¥Ñ¥¤¥ë¤µ¤ì¤ë¤è¤¦¤Ë¡¢ ¥Þ¥¯¥íYYDEBUG¤ÎÄêµÁ¤ò¹½Ê¸²òÀÏ´ï¥Õ¥¡¥¤¥ë¤ËÆþ¤ì¤Þ¤¹ See Debugging Your Parser¡£

-v
--verbose

¹½Ê¸²òÀÏ´ï¤Î¾õÂ֤ˤĤ¤¤Æ¤Î¾ÜºÙ¤ÊÀâÌÀ¤È¡¢ ¤½¤ì¤é¤Î¾õÂ֤Ǥ½¤ì¤¾¤ì¤ÎÀèÆÉ¤ß¥È¡¼¥¯¥ó¤¬¸½¤ì¤ë¤È²¿¤¬µ¯¤­¤ë¤«µ­½Ò¤·¤¿¡¢ ÄɲäΥե¡¥¤¥ë¤òÀ¸À®¤·¤Þ¤¹¡£

¤³¤Î¥Õ¥¡¥¤¥ë¤Ï¡¢±é»»»Ò¤ÎÍ¥Àè½ç°Ì¤Ë¤è¤Ã¤Æ²ò·è¤·¤¿¤â¤Î¤â²ò·è¤·¤Ê¤«¤Ã¤¿ ¤â¤Î¤â´Þ¤á¤Æ¡¢¾×ÆÍ¤Ë¤Ä¤¤¤Æ¤ÎÀâÌÀ¤ò´Þ¤ó¤Ç¤¤¤Þ¤¹¡£

À¸À®¤µ¤ì¤ë¥Õ¥¡¥¤¥ë¤Î̾Á°¤Ï¡¢¹½Ê¸²òÀÏ´ï¤Î¥Õ¥¡¥¤¥ë¤Î̾Á°¤«¤é¡¢ ‘.tab.c’¤Þ¤¿¤Ï‘.c’¤ò¼è¤ê½ü¤¤¤Æ¡¢ Âå¤ï¤ê¤Ë‘.output’¤òÉÕ¤±¤¿¤â¤Î¤Ç¤¹¡£

¤·¤¿¤¬¤Ã¤Æ¡¢ÆþÎϤÎʸˡ¥Õ¥¡¥¤¥ë¤Î̾Á°¤¬foo.y¤Ê¤é¤Ð¡¢ ÆÃ¤Ë»ØÄꤷ¤Ê¤¤¤È¡¢¹½Ê¸²òÀÏ´ï¥Õ¥¡¥¤¥ë¤Î̾Á°¤Ïfoo.tab.c¤Ë¤Ê¤ê¡¢ ¾ÜºÙ¤ÊÀâÌÀ¤Î¥Õ¥¡¥¤¥ë¤Î̾Á°¤Ïfoo.output¤Ë¤Ê¤ê¤Þ¤¹¡£

-V
--version

¥Ð¡¼¥¸¥ç¥óÈÖ¹æ¤òɽ¼¨¤·¤Æ¡¢Bison¤ò½ªÎ»¤µ¤»¤Þ¤¹¡£

-h
--help

¥³¥Þ¥ó¥É¥é¥¤¥ó¥ª¥×¥·¥ç¥ó¤ÎÍ×Ìó¤òɽ¼¨¤·¤Æ¡¢Bison¤ò½ªÎ»¤µ¤»¤Þ¤¹¡£

-y
--yacc
--fixed-output-files

-o y.tab.c’¤ÈÅù²Á¤Ç¤¹¡£¹½Ê¸²òÀÏ´ï¥Õ¥¡¥¤¥ë¤Î̾Á°¤Ï y.tab.c¤Ë¤Ê¤ê¡¢Â¾¤Î½ÐÎÏ¥Õ¥¡¥¤¥ë¤Î̾Á°¤Ïy.output¤È y.tab.h¤Ë¤Ê¤ê¤Þ¤¹¡£¤³¤Î¥ª¥×¥·¥ç¥ó¤ÎÌÜŪ¤Ï¡¢ ½ÐÎÏ¥Õ¥¡¥¤¥ë¤Î̾Á°¤òYacc¤Ë¹ç¤ï¤»¤ë¤³¤È¤Ç¤¹¡£ ¼¡¤Î¥·¥§¥ë¥¹¥¯¥ê¥×¥È¤Ï¡¢Yacc¤ÎÂåÍѤˤʤê¤Þ¤¹¡£

bison -y $*