Next: Stack Overflow, Previous: Reduce/Reduce, Up: Algorithm [Contents][Index]
¤½¤¦¤Ê¤ë¤Ï¤º¤¬¤Ê¤¤¤è¤¦¤Ë¸«¤¨¤ë¤Î¤Ë¡¢¤È¤¤É¤ ´Ô¸µ/´Ô¸µ¾×ÆÍ¤¬µ¯¤¤ë¤³¤È¤¬¤¢¤ê¤Þ¤¹¡£ Îã¤ò¼¨¤·¤Þ¤¹¡£
%token ID %% def: param_spec return_spec ',' ; param_spec: type | name_list ':' type ;
return_spec: type | name ':' type ;
type: ID ;
name: ID ; name_list: name | name ',' name_list ;
¤³¤Îʸˡ¤Ï¡¢1¸Ä¤Î¥È¡¼¥¯¥ó¤ÎÀèÆÉ¤ß¤Ë¤è¤Ã¤Æ¡¢¹½Ê¸²òÀϤǤ¤ë¤è¤¦¤Ë¸«¤¨¤Þ¤¹¡£
¤¿¤È¤¨¤Ð¡¢pram_spec
¤¬ÆÉ¤Þ¤ì¤¿¸å¤Ç¡¢
ID
¤Ï¥«¥ó¥Þ¤«¥»¥ß¥³¥í¥ó¤¬Â³¤¯¤Ê¤é¤Ðname
¡¢
¤½¤¦¤Ç¤Ê¤±¤ì¤Ðtype
¤È¤Ê¤ê¤Þ¤¹¡£
¸À¤¤´¹¤¨¤ì¤Ð¡¢¤³¤Îʸˡ¤ÏLR(1)¤Ç¤¹¡£
¤·¤«¤·¡¢Bison¤Ï¡¢Â¿¤¯¤Î¹½Ê¸²òÀÏ´ïÀ¸À®´ï¤ÈƱÍͤˡ¢
¤¹¤Ù¤Æ¤ÎLR(1)ʸˡ¤ò°·¤¨¤ë¤ï¤±¤Ç¤Ï¤¢¤ê¤Þ¤»¤ó¡£
Á°½Ò¤ÎÎã¤Ç¤Ï¡¢ID
¤Î¸å¤Ç¡¢¤½¤³¤¬param_spec
¤ÎÀèÆ¬¤Ç¤¢¤ë¤È¤¤¤¦
ʸ̮¤È¡¢¤½¤³¤¬return_spec
¤ÎÀèÆ¬¤Ç¤¢¤ë¤È¤¤¤¦Ê¸Ì®¤Ï¡¢
Bison¤¬Æ±°ì¤Ç¤¢¤ë¤È¤ß¤Ê¤·¤Æ¤·¤Þ¤¦¤Û¤É»÷¤Æ¤¤¤Þ¤¹¡£
¤³¤ì¤é¤Îʸ̮¤¬»÷¤Æ¤·¤Þ¤¦¸¶°ø¤Ï¡¢Æ±¤¸µ¬Â§¤Î½¸¹ç¤¬Í¸ú¤Ë¤Ê¤ë¡¢¤Ä¤Þ¤ê¡¢
name
¤Ø´Ô¸µ¤¹¤ë¤¿¤á¤Îµ¬Â§¤È¡¢type
¤Ø´Ô¸µ¤¹¤ë¤¿¤á¤Îµ¬Â§¤Î
ξÊý¤¬Í¸ú¤Ê¤³¤È¤Ç¤¹¡£
Bison¤Ï¡¢¤½¤Îµ¬Â§¤¬2¤Ä¤Îʸ̮¤Ç°Û¤Ê¤ëÀèÆÉ¤ß¥È¡¼¥¯¥ó¤òÍ׵᤹¤ë¤è¤¦¤Ê¡¢
½èÍý¤ÎÃʳ¬¤ò·èÄê¤Ç¤¤º¡¢Î¾¼Ô¤«¤é1¤Ä¤Î¹½Ê¸²òÀÏ´ï¾õÂÖ¤¬¤Ç¤¤Æ¤·¤Þ¤¤¤Þ¤¹¡£
2¸Ä¤Îʸ̮¤ÎÁȤ߹ç¤ï¤»¤Ï¡¢¸å¤Ç¾×ÆÍ¤òµ¯¤³¤·¤Þ¤¹¡£
¹½Ê¸²òÀÏ´ï¤ÎÍѸì¤Ç¤¤¤¨¤Ð¡¢¤³¤ÎÌäÂê¤ÎȯÀ¸¤Ï¡¢
ʸˡ¤¬LALR(1)¤Ç¤Ê¤¤¤³¤È¤ò°ÕÌ£¤·¤Þ¤¹¡£
°ìÈ̤ˡ¢¤³¤Î¤è¤¦¤Ê·çÅÀ¤Ï²ò·è¤·¤Æ¡¢Ê¸½ñ²½¤¹¤ë¤Ù¤¤Ç¤¹¡£ ¤·¤«¤·¡¢¤³¤ÎÌäÂê¤ÏËܼÁŪ¤Ë²ò·èº¤Æñ¤Ç¤¹¡£ LR(1)ʸˡ¤ò°·¤¨¤ë¹½Ê¸²òÀÏ´ïÀ¸À®´ï¤Ï¡¢ºîÀ®º¤Æñ¤Ç¡¢ À¸À®¤µ¤ì¤ë¹½Ê¸²òÀϴ郎µðÂç¤Ë¤Ê¤Ã¤Æ¤·¤Þ¤¤¤Þ¤¹¡£ ¼ÂÍѾ塢Bison¤Ïº£¤Î¤Þ¤Þ¤Ç¤âÍÍѤǤ¹¡£
¤³¤Î¤è¤¦¤ÊÌäÂ꤬¸½¤ì¤¿¾ì¹ç¤Ë¡¢º®Íð¤Î¸µ¤Ë¤Ê¤Ã¤Æ¤¤¤ë2¼ïÎà¤Î¹½Ê¸²òÀÏ´ï¤Î
¾õÂÖ¤ò¶èÊ̤·¡¢¤½¤ì¤é¤¬°ã¤¦¤È¤¤¤¦Ìܰõ¤«²¿¤«¤òÄɲ乤뤳¤È¤Ë¤è¤Ã¤Æ¡¢
¤·¤Ð¤·¤ÐÌäÂê¤ò²ò·è¤Ç¤¤Þ¤¹¡£
Á°½Ò¤ÎÎã¤Ç¤Ï¡¢¼¡¤Î¤è¤¦¤Ëreturn_spec
¤Ëµ¬Â§¤òÄɲ䷤ơ¢
ÌäÂê¤ò²ò·è¤Ç¤¤Þ¤¹¡£
%token BOGUS … %% … return_spec: type | name ':' type /* ¤³¤Îµ¬Â§¤Ï·è¤·¤Æ»È¤ï¤ì¤Ê¤¤¡£ */ | ID BOGUS ;
ID
¤Î¼¡¤Çreturn_spec
¤ÎÀèÆ¬¤Ç¤¢¤ëʸ̮¤Ç¡¢
Äɲäε¬Â§¤¬Í¸ú¤Ë¤Ê¤ë²ÄǽÀ¤òƳÆþ¤·¤Æ¡¢ÌäÂê¤ò²ò·è¤·¤Æ¤¤¤Þ¤¹¡£
¤³¤Îµ¬Â§¤Ï¡¢param_spec
¤Ë´ØÏ¢¤¹¤ëʸ̮¤Ç¤Ï͸ú¤Ë¤Ê¤é¤Ê¤¤¤Î¤Ç¡¢
2¸Ä¤Îʸ̮¤Ï¡¢°Û¤Ê¤ë¹½Ê¸²òÀÏ´ï¾õÂÖ¤ò»ý¤Á¤Þ¤¹¡£
BOGUS
¤Ïyylex
¤Ë¤è¤Ã¤Æ¤Ï·è¤·¤ÆÀ¸À®¤µ¤ì¤Ê¤¤¤Î¤Ç¡¢
Äɲ䵤줿µ¬Â§¤ÏÆþÎϤ¬¼ÂºÝ¤Ë¹½Ê¸²òÀϤµ¤ì¤ëÊýË¡¤Ë¤Ï±Æ¶Á¤·¤Þ¤»¤ó¡£
¤³¤Î¶ñÂÎÎã¤Ç¤Ï¡¢ÌäÂê¤ò²ò·è¤¹¤ëÊ̤ÎÊýË¡¤¬¤¢¤ê¤Þ¤¹¡£
¤Ä¤Þ¤ê¡¢return_spec
¤Îµ¬Â§¤ò¡¢name
·Ðͳ¤Ç¤Ï¤Ê¤¯
ID
¤òľÀܻȤ¦¤è¤¦¤Ë½ñ¤´¹¤¨¤ë¤Î¤Ç¤¹¡£
return_spec
¤ËÂФ¹¤ëµ¬Â§¤Ï¡¢name
¤ËÂФ¹¤ëµ¬Â§¤Ç¤Ï¤Ê¤¯¡¢
return_spec
¤ËÂФ¹¤ëµ¬Â§¤ò͸ú¤Ë¤¹¤ë¤Î¤Ç¡¢
2¤Ä¤Îº®Í𤷤Ƥ¤¤¿Ê¸Ì®¤Ï°Û¤Ê¤ë͸ú¤Êµ¬Â§¤Î½¸¤Þ¤ê¤ò»ý¤Á¤Þ¤¹¡£
param_spec: type | name_list ':' type ; return_spec: type | ID ':' type ;