Next: Action Types, Previous: Multiple Types, Up: Semantics [Contents][Index]
ʸˡµ¬Â§¤Ë¤È¤â¤Ê¤¦¥¢¥¯¥·¥ç¥ó¤Ï¡¢¤½¤Îµ¬Â§¤¬Ç§¼±¤µ¤ì¤ë¤¿¤Ó¤Ë¼Â¹Ô¤µ¤ì¤ë C¤Î¥×¥í¥°¥é¥à¤«¤é¤Ê¤ê¤Þ¤¹¡£ ¥¢¥¯¥·¥ç¥ó¤Î»Å»ö¤Î¤Û¤È¤ó¤É¤Ï¡¢´ØÏ¢¤¹¤ë¥È¡¼¥¯¥ó¤Þ¤¿¤Ï¾®¤µ¤¤¥°¥ë¡¼¥×¤«¤é µ¬Â§¤Ë¤·¤¿¤¬¤Ã¤Æ¹½À®¤µ¤ì¤ë¥°¥ë¡¼¥×¤Î¡¢°ÕÌ£Ãͤη׻»¤Ç¤¹¡£
¥¢¥¯¥·¥ç¥ó¤Ï¡¢C¤Îʣʸ¤Î¤è¤¦¤Ë¡¢¥Ö¥ì¡¼¥¹¤Ç°Ï¤Þ¤ì¤¿C¤Îʸ¤«¤é¤Ê¤ê¤Þ¤¹¡£ ¥¢¥¯¥·¥ç¥ó¤Ï¡¢µ¬Â§¤Î¤É¤Î¾ì½ê¤Ë¤âÃÖ¤±¡¢¤½¤Î¾ì½ê¤Ç¼Â¹Ô¤µ¤ì¤Þ¤¹¡£ µ¬Â§¤Î¤Û¤È¤ó¤É¤Ï¡¢µ¬Â§¤Î½ª¤ï¤ê¤Î¹½À®Í×ÁǤÎʤӤθå¤Ë¡¢ 1¤Ä¤À¤±¥¢¥¯¥·¥ç¥ó¤ò»ý¤Á¤Þ¤¹¡£ µ¬Â§¤ÎÅÓÃæ¤ËÃÖ¤«¤ì¤¿¥¢¥¯¥·¥ç¥ó¤Ï¡¢¼ê¤Î¹þ¤ó¤ÀÊýË¡¤ÇÆÃÊ̤ÊÌÜŪ¤Ë»È¤ï¤ì¤Þ¤¹ ¡Êsee Actions in Mid-Rule¡Ë¡£
¥¢¥¯¥·¥ç¥ó¤ÎÃæ¤ÎC¤Ç½ñ¤«¤ì¤¿¥×¥í¥°¥é¥à¤Ï¡¢
µ¬Â§¤ÎÂènÈÖÌܤÎÍ×ÁǤËÂбþ¤¹¤ë°ÕÌ£Ãͤò¡¢
$n
¤È¤¤¤¦½ñ¼°¤Ç»²¾È¤Ç¤¤Þ¤¹¡£
¤Þ¤¿¡¢¤½¤Îµ¬Â§¤¬¹½À®¤¹¤ë¥°¥ë¡¼¥×¤Î°ÕÌ£Ãͤò¡¢
$$
¤È¤¤¤¦½ñ¼°¤Ç»²¾È¤Ç¤¤Þ¤¹¡£
¥¢¥¯¥·¥ç¥ó¤¬¹½Ê¸²òÀÏ´ï¥Õ¥¡¥¤¥ë¤ËÊ£¼Ì¤µ¤ì¤ë¤È¤¤Ë¡¢Bison¤Ï¡¢
¾åµ¤Î¹½À®Í×ÁǤòÇÛÎóÍ×ÁǤؤλ²¾È¤ËÊÑ´¹¤·¤Þ¤¹¡£
Îã¤ò¼¨¤·¤Þ¤¹¡£
exp: … | exp '+' exp { $$ = $1 + $3; }
¤³¤Îµ¬Â§¤Ï¡¢²Ã»»µ¹æ¤Ç·ë¤ÓÉÕ¤±¤é¤ì¤¿2¤Ä¤Î¾®¤µ¤¤exp
¥°¥ë¡¼¥×¤«¤é¡¢
1¤Ä¤Îexp
¤ò¹½À®¤·¤Þ¤¹¡£
¤³¤Î¥¢¥¯¥·¥ç¥ó¤ÎÃæ¤Ç¡¢$1
¤È$3
¤Ï¡¢
µ¬Â§¤Î±¦Â¦¤ÎºÇ½é¤È3ÈÖÌܤε¹æ¤Ç¤¢¤ëexp
¥°¥ë¡¼¥×¤Î
°ÕÌ£Ãͤò»²¾È¤·¤Þ¤¹¡£
¤³¤Îµ¬Â§¤Ë¤è¤Ã¤ÆÇ§¼±¤µ¤ì¤ë²Ã»»¼°¤ÎÃͤˤʤë¤è¤¦¤Ë¡¢
Ϥ¬$$
¤ËÂåÆþ¤µ¤ì¤Þ¤¹¡£
¤â¤·¡¢‘+’¥È¡¼¥¯¥ó¤ËÍÍѤÊÃͤ¬¤¢¤ë¤Ê¤é¤Ð¡¢
¤½¤ì¤ò$2
¤È¤·¤Æ»²¾È¤Ç¤¤ë¤Ç¤·¤ç¤¦¡£
µ¬Â§¤ËÂФ·¤Æ¥¢¥¯¥·¥ç¥ó¤ò»ØÄꤷ¤Ê¤±¤ì¤Ð¡¢Bison¤Ï¡¢
¾Êά»þ¥¢¥¯¥·¥ç¥ó$$ = $1
¤òÊ䤤¤Þ¤¹¡£
¤·¤¿¤¬¤Ã¤Æ¡¢µ¬Â§¤ÎºÇ½é¤Îµ¹æ¤ÎÃͤ¬µ¬Â§Á´ÂΤÎÃͤˤʤê¤Þ¤¹¡£
¤â¤Á¤í¤ó¡¢Î¾¼Ô¤Î·¿¤¬°ìÃפ¹¤ë¾ì¹ç¤Ë¤Î¤ß¡¢¾Êά»þ¥¢¥¯¥·¥ç¥ó¤Ï͸ú¤Ç¤¹¡£
¶õµ¬Â§¤ËÂФ¹¤ë¾Êά»þ¥¢¥¯¥·¥ç¥ó¤Ï̵°ÕÌ£¤Ç¤¹¡£
¤¹¤Ù¤Æ¤Î¶õµ¬Â§¤Ï¡¢¤½¤Îµ¬Â§¤ÎÃͤ¬É¬Íפʤé¤Ð¡¢
ÌÀ¼¨Åª¤Ê¥¢¥¯¥·¥ç¥ó¤ò»ý¤ÄɬÍפ¬¤¢¤ê¤Þ¤¹¡£
$n
¤În¤Ï0¤Þ¤¿¤ÏÉ餬µö¤µ¤ì¡¢
¸½ºß¤Îµ¬Â§¤Ë¥Þ¥Ã¥Á¤¹¤ëÁ°¤Ë¥¹¥¿¥Ã¥¯¤ËÀÑ¤Þ¤ì¤Æ¤¤¤¿
¥È¡¼¥¯¥ó¤È¥°¥ë¡¼¥×¤Î°ÕÌ£Ãͤò»²¾È¤·¤Þ¤¹¡£
¤³¤ì¤ÏÈó¾ï¤Ë´í¸±¤Ê¼êË¡¤Ç¡¢°ÂÁ´¤Ë»È¤¦¤¿¤á¤Ë¤Ï¡¢
¤½¤Îµ¬Â§¤¬Å¬ÍѤµ¤ì¤ëʸ̮¤ò¤¢¤Ê¤¿¤¬´°Á´¤ËÍý²ò¤·¤Æ¤¤¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£
¤³¤ì¤ò°ÂÁ´¤Ë»È¤¨¤ëÎã¤ò¼¨¤·¤Þ¤¹¡£
foo: expr bar '+' expr { … } | expr bar '-' expr { … } ;
bar: /* ¶õ */ { previous_expr = $0; } ;
bar
¤¬¤³¤³¤Ë½ñ¤«¤ì¤¿ÊýË¡¤Ç¤Î¤ß»È¤ï¤ì¤ë¤Ê¤é¤Ð¡¢
foo
¤ÎÄêµÁ¤ÎÃæ¤Çbar
¤è¤êÁ°¤Î
expr
¤ÎÃͤò$0
¤¬»²¾È¤·¤Þ¤¹¡£