Next: , Previous: Parser States, Up: Algorithm   [Contents][Index]


5.6 ´Ô¸µ/´Ô¸µ¾×ÆÍ

Ʊ°ì¤ÎÆþÎÏÎó¤ËÂФ·¤Æ2¸Ä°Ê¾å¤Îµ¬Â§¤¬Å¬ÍѲÄǽ¤Ç¤¢¤ë¤È¡¢ ´Ô¸µ/´Ô¸µ¾×ÆÍ¤¬µ¯¤­¤Þ¤¹¡£ ¤³¤ì¤Ï¡¢Ä̾ʸˡ¤Î½ÅÂç¤Ê¥¨¥é¡¼¤ò°ÕÌ£¤·¤Þ¤¹¡£

0¸Ä°Ê¾å¤Îword¤ÎʤӤò¥°¥ë¡¼¥×²½¤¹¤ë¡¢ ¸í¤Ã¤¿»î¤ß¤ÎÎã¤ò¼¨¤·¤Þ¤¹¡£

sequence: /* ¶õ */
                { printf ("empty sequence\n"); }
        | maybeword
        | sequence word
                { printf ("added word %s\n", $2); }
        ;

maybeword: /* ¶õ */
                { printf ("empty maybeword\n"); }
        | word
                { printf ("single word %s\n", $1); }
        ;

¥¨¥é¡¼¤Ï¡¢¤¢¤¤¤Þ¤¤¤µ¤Ë¤¢¤ê¤Þ¤¹¡£ ¤Ä¤Þ¤ê¡¢1¸Ä¤Îword¤òsequence¤Ë¹½Ê¸²òÀϤ¹¤ë¡¢ 2¸Ä°Ê¾å¤ÎÊýË¡¤¬¤¢¤ê¤Þ¤¹¡£ word¤Ï¡¢maybeword¤Ë´Ô¸µ¤µ¤ì¡¢ Âè2¤Îµ¬Â§¤Ë¤è¤Ã¤Æsequence¤Ë¤Ê¤ê¤¨¤Þ¤¹¡£ ¤Þ¤¿¡¢ºÇ½é¤Îµ¬Â§¤Ç¡¢¶õ¥Ç¡¼¥¿¤¬sequence¤Ë´Ô¸µ¤µ¤ì¡¢ ¤½¤ì¤¬Âè3¤Îµ¬Â§¤Ë¤è¤Ã¤Æword¤ÈÁȤ߹ç¤ï¤µ¤ì¤Æ sequence¤Ë¤Ê¤ê¤¨¤Þ¤¹¡£

¤µ¤é¤Ë¡¢¶õ¥Ç¡¼¥¿¤¬sequence¤Ë´Ô¸µ¤µ¤ì¤ëÊýË¡¤¬2¤Ä°Ê¾å¤¢¤ê¤Þ¤¹¡£ Âè1¤Îµ¬Â§¤ÇľÀÜ´Ô¸µ¤µ¤ì¤ëÊýË¡¤È¡¢ maybeword¤ò·Ðͳ¤·¤ÆÂè2¤Îµ¬Â§¤Ç´Ô¸µ¤µ¤ì¤ëÊýË¡¤Ç¤¹¡£

¤³¤Î°ã¤¤¤Ï¡¢ÆÃÄê¤ÎÆþÎϤ¬ÀµÅö¤Ç¤¢¤ë¤«¤É¤¦¤«¤Ë´Ø·¸¤Ê¤¤¤Î¤Ç¡¢ ¤µ¤µ¤¤¤Ê¤³¤È¤Ë»×¤¨¤ë¤«¤â¤·¤ì¤Þ¤»¤ó¡£ ¤·¤«¤·¡¢¤³¤ì¤Ï¡¢¤É¤Î¥¢¥¯¥·¥ç¥ó¤¬¼Â¹Ô¤µ¤ì¤ë¤«¤Ë±Æ¶Á¤·¤Þ¤¹¡£ ¤¢¤ë¹½Ê¸²òÀϼê½ç¤Ç¤ÏÂè2¤Îµ¬Â§¤Î¥¢¥¯¥·¥ç¥ó¤¬¼Â¹Ô¤µ¤ì¡¢ Ê̤ι½Ê¸²òÀϼê½ç¤Ç¤ÏÂè1¤Îµ¬Â§¤Î¥¢¥¯¥·¥ç¥ó¤ÈÂè3¤Îµ¬Â§¤Î¥¢¥¯¥·¥ç¥ó¤¬ ¼Â¹Ô¤µ¤ì¤Þ¤¹¡£ ¤³¤ÎÎã¤Ç¤Ï¡¢¥×¥í¥°¥é¥à¤Î½ÐÎϤ¬°Û¤Ê¤ê¤Þ¤¹¡£

Bison¤Ï¡¢ºÇ½é¤Ë¸½¤ì¤¿Ê¸Ë¡¤òÁª¤Ö¤³¤È¤Ç¡¢´Ô¸µ/´Ô¸µ¾×ÆÍ¤ò²ò·è¤·¤Þ¤¹¤¬¡¢ ¤³¤ì¤ËÍê¤ë¤³¤È¤ÏÈó¾ï¤Ë´í¸±¤Ç¤¹¡£ ´Ô¸µ/´Ô¸µ¾×ÆÍ¤Î¤½¤ì¤¾¤ì¤Ï¡¢¿Í´Ö¤Ë¤è¤Ã¤Æ²òÀϤµ¤ì¡¢ Ä̾ï¤Ï¼è¤ê½ü¤«¤ì¤ë¤Ù¤­¤Ç¤¹¡£ sequence¤òÄêµÁ¤¹¤ëÀµ¤·¤¤ÊýË¡¤ò¼¨¤·¤Þ¤¹¡£

sequence: /* ¶õ */
                { printf ("empty sequence\n"); }
        | sequence word
                { printf ("added word %s\n", $2); }
        ;

´Ô¸µ/´Ô¸µ¾×ÆÍ¤òµ¯¤³¤¹¡¢Ê̤Τ¢¤ê¤¬¤Á¤Ê¥¨¥é¡¼¤ÎÎã¤ò¼¨¤·¤Þ¤¹¡£

sequence: /* ¶õ */
        | sequence words
        | sequence redirects
        ;

words:    /* ¶õ */
        | words word
        ;

redirects:/* ¶õ */
        | redirects redirect
        ;

¤³¤³¤Ï¡¢word¤Þ¤¿¤Ïredirect¥°¥ë¡¼¥×¤Î¤É¤Á¤é¤«¤ò´Þ¤à Îó¤ÎÄêµÁ¤¬ÌÜŪ¤Ç¤¹¡£ sequence¡¢words¡¢redirects¤½¤ì¤¾¤ì¸ÄÊ̤ΠÄêµÁ¤Ë¥¨¥é¡¼¤Ï¤¢¤ê¤Þ¤»¤ó¡£¤·¤«¤·¡¢3¸Ä¤ò¹ç¤ï¤»¤ë¤È¡¢¤¢¤¤¤Þ¤¤¤Ë¤Ê¤ê¤Þ¤¹¡£ ¶õ¤ÎÆþÎϤˤϡ¢Ìµ¸Â¸Ä¤Î¹½Ê¸²òÀÏÊýË¡¤¬¤¢¤ê¤Þ¤¹¡£

¶õ¥Ç¡¼¥¿¤¬words¤Ë¤Ê¤Ã¤¿¤È²¾Äꤷ¤Þ¤·¤ç¤¦¡£ ¤½¤ì¤Ï¡¢2¸Ä¤Îwords¤Ë¤â¡¢3¸Ä¤Îwords¤Ë¤â¡¢ ²¿¸Ä¤Îwords¤Ë¤â¤Ê¤ê¤¨¤Þ¤¹¡£ ¤¢¤ë¤¤¤Ï¡¢1¸Ä¤Îwords¤Ë3¸Ä¤Îredirects¤È¤â¤¦1¸Ä¤Îword¤¬ ³¤¯¤³¤È¤â¹Í¤¨¤é¤ì¤Þ¤¹¡£Æ±Íͤˡ¢Ìµ¸Â¤Î²ò¼á¤¬²Äǽ¤Ç¤¹¡£

¤³¤ì¤é¤Îµ¬Â§¤òľ¤¹ÊýË¡¤¬2¤Ä¤¢¤ê¤Þ¤¹¡£ Âè1¤Ë¡¢1Ãʳ¬¤ÎÎó¤Ë¤¹¤ëÊýË¡¤Ç¤¹¡£

sequence: /* ¶õ */
        | sequence word
        | sequence redirect
        ;

Âè2¤Ë¡¢words¤Èredirects¤¬¶õ¤Ë¤Ê¤ë¤Î¤òËɤ°ÊýË¡¤Ç¤¹¡£

sequence: /* ¶õ */
        | sequence words
        | sequence redirects
        ;

words:    word
        | words word
        ;

redirects:redirect
        | redirects redirect
        ;