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


5.1 ÀèÆÉ¤ß¥È¡¼¥¯¥ó

Bison¹½Ê¸²òÀÏ´ï¤Ï¡¢É¬¤º¤·¤âʸˡµ¬Â§¤ËŬ¹ç¤¹¤ëºÇ¸å¤În¸Ä¤Î¥È¡¼¥¯¥ó ¤Þ¤¿¤Ï¥°¥ë¡¼¥×¤¬¸«¤Ä¤«¤ë¤È¤¹¤°¤Ë´Ô¸µ¤ò¹Ô¤¦¤ï¤±¤Ç¤Ï¤¢¤ê¤Þ¤»¤ó¡£ ¤½¤Î¤è¤¦¤Êñ½ã¤ÊÊýË¡¤Ï¡¢Â¿¤¯¤Î¸À¸ì¤Î½èÍý¤ËŬ¤µ¤Ê¤¤¤«¤é¤Ç¤¹¡£ ¤½¤ÎÂå¤ï¤ê¤Ë¡¢´Ô¸µ¤¬²Äǽ¤Ê¾ì¹ç¤Ë¡¢¹½Ê¸²òÀÏ´ï¤Ï¼¡¤Î¥È¡¼¥¯¥ó¤ò ¡ÖÀèÆÉ¤ß¡×¤·¡¢¼¡¤Ë²¿¤ò¤¹¤ë¤Ù¤­¤«¤ò·èÄꤷ¤Þ¤¹¡£

¥È¡¼¥¯¥ó¤¬ÆÉ¤Þ¤ì¤ë¤È¡¢¤½¤ì¤Ï¤¹¤°¤Ë¥·¥Õ¥È¤µ¤ì¤ë¤Î¤Ç¤Ï¤Ê¤¯¡¢ ¤Þ¤º¡¢ÀèÆÉ¤ß¥È¡¼¥¯¥ó¡Êlook-ahead token¡Ë¤Ë¤Ê¤ê¡¢ ¥¹¥¿¥Ã¥¯¤Ë¤ÏÃÖ¤«¤ì¤Þ¤»¤ó¡£ ÀèÆÉ¤ß¥È¡¼¥¯¥ó¤ò»Ä¤·¤¿¤Þ¤Þ¡¢¹½Ê¸²òÀϴ郎¡¢¥¹¥¿¥Ã¥¯¾å¤Î¥È¡¼¥¯¥ó¤Þ¤¿¤Ï ¥°¥ë¡¼¥×¤ËÂФ·¤Æ1¸Ä°Ê¾å¤Î´Ô¸µ¤ò¼Â¹Ô¤·¤Þ¤¹¡£ ¤½¤ì°Ê¾å¤Î´Ô¸µ¤¬µ¯¤³¤ê¤¨¤Ê¤¤¾ì¹ç¤Ë¡¢ ÀèÆÉ¤ß¥È¡¼¥¯¥ó¤Ï¥¹¥¿¥Ã¥¯¤Ë¥·¥Õ¥È¤µ¤ì¤Þ¤¹¡£ ¤³¤ì¤Ï¡¢¤¹¤Ù¤Æ¤Î²Äǽ¤Ê´Ô¸µ¤¬¼Â¹Ô¤µ¤ì¤¿¤³¤È¤ò°ÕÌ£¤·¤Þ¤»¤ó¡£ ÀèÆÉ¤ß¥È¡¼¥¯¥ó¤Î¥È¡¼¥¯¥ó·¿¤Ë±þ¤¸¤Æ¡¢ ¤¤¤¯¤Ä¤«¤Îµ¬Â§¤ÏŬÍѤòÃ٤餵¤ì¤Æ¤¤¤ë¤«¤â¤·¤ì¤Þ¤»¤ó¡£

ÀèÆÉ¤ß¤¬É¬ÍפʴÊñ¤ÊÎã¤ò¼¨¤·¤Þ¤¹¡£ ²¼µ­¤Î3¸Ä¤Îµ¬Â§¤Ï¡¢2¹à²Ã»»±é»»»Ò¡¢Ã±¹à³¬¾è±é»»»Ò¡Ê‘!’¡Ë¡¢ ¥°¥ë¡¼¥×¤Î¤¿¤á¤Î¤«¤Ã¤³¤ò´Þ¤ß¤Þ¤¹¡£

expr:     term '+' expr
        | term
        ;
term:     '(' expr ')'
        | term '!'
        | NUMBER
        ;

¥È¡¼¥¯¥ó‘1 + 2¤¬ÆÉ¤ß¹þ¤Þ¤ì¤Æ¥·¥Õ¥È¤µ¤ì¤Æ¤¤¤ë¤È¤­¤Ë¡¢ ²¿¤¬µ¯¤­¤ë¤Ç¤·¤ç¤¦¤«¡£¤â¤·¡¢Â³¤¯¥È¡¼¥¯¥ó¤¬‘)’¤Ê¤é¤Ð¡¢ ºÇ½é¤Î3¸Ä¤Î¥È¡¼¥¯¥ó¤Ïexpr¤Î·Á¼°¤Ë´Ô¸µ¤µ¤ì¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£ ¤³¤ì¤¬¡¢Í£°ìÍ­¸ú¤ÊÆ»¤Ç¤¹¡£ ¤Ê¤¼¤Ê¤é¤Ð¡¢‘)’¤ò¥·¥Õ¥È¤·¤Æ¡¢term ')'¤È¤¤¤¦µ­¹æÎó¤â À¸À®²Äǽ¤Ç¤¹¤¬¡¢¤É¤Îµ¬Â§¤â¤½¤Î¤è¤¦¤Êµ­¹æÎó¤òµö¤·¤Æ¤¤¤Ê¤¤¤«¤é¤Ç¤¹¡£

¤â¤·¡¢Â³¤¯¥È¡¼¥¯¥ó¤¬‘!’¤Ê¤é¤Ð¡¢¤½¤ì¤Ï¤¿¤À¤Á¤Ë¥·¥Õ¥È¤µ¤ì¤ëɬÍפ¬¤¢¤ê¡¢ ‘2 !¤«¤éterm¤¬´Ô¸µ¤µ¤ì¤Þ¤¹¡£ ¤½¤¦¤Ç¤Ï¤Ê¤¯¡¢¹½Ê¸²òÀϴ郎¥·¥Õ¥È¤ÎÁ°¤Ë´Ô¸µ¤·¤Æ¤¤¤ì¤Ð¡¢ ‘1 + 2¤¬expr¤Ë´Ô¸µ¤µ¤ì¤Þ¤¹¡£ ¤·¤«¤·¡¢¤½¤Î¤è¤¦¤Ê´Ô¸µ¤ò¤·¤è¤¦¤È¤¹¤ë¤Èexpr '!'¤È¤¤¤¦µ­¹æÎó¤ò ¥¹¥¿¥Ã¥¯¤ËÀ¸À®¤·¤è¤¦¤È¤¹¤ë¤Î¤Ç¡¢‘!’¤ò¥·¥Õ¥È¤¹¤ë¤Î¤ÏÉÔ²Äǽ¤Ç¤¹¡£ ¤½¤Î¤è¤¦¤Êµ­¹æÎó¤Ïµö¤µ¤ì¤Þ¤»¤ó¡£

¸½ºß¤ÎÀèÆÉ¤ß¥È¡¼¥¯¥ó¤Ï¡¢ÊÑ¿ôyychar¤Ëµ­²±¤µ¤ì¤Æ¤¤¤Þ¤¹ See Special Features for Use in Actions¡£