Next: , Previous: Actions, Up: Semantics   [Contents][Index]


3.5.4 ¥¢¥¯¥·¥ç¥óÃæ¤ÎÃͤΥǡ¼¥¿·¿

¤¹¤Ù¤Æ¤Î°ÕÌ£ÃͤËÂФ·¤ÆÆ±°ì¤Î¥Ç¡¼¥¿·¿¤ò»È¤Ã¤Æ¤¤¤ë¤Î¤Ê¤é¤Ð¡¢ $$¤È$n¤Ï¤½¤Î¥Ç¡¼¥¿·¿¤ò»ý¤Á¤Þ¤¹¡£

¤µ¤Þ¤¶¤Þ¤Ê¥Ç¡¼¥¿·¿¤ò»ØÄꤹ¤ë¤¿¤á¤Ë%union¤ò»È¤Ã¤Æ¤¤¤ë¤Ê¤é¤Ð¡¢ °ÕÌ£Ãͤò»ý¤Ä½ªÃ¼µ­¹æ¤ÈÈó½ªÃ¼µ­¹æ¤Î¤½¤ì¤¾¤ì¤ËÂФ·¤Æ¡¢ ¥Ç¡¼¥¿·¿¤ÎÃæ¤«¤éŬÀڤʤâ¤Î¤òÁª¤Ö¤è¤¦¤ËÀë¸À¤¹¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£ ¤¹¤ë¤È¡¢$$¤Èn¤ò»È¤¦¤¿¤Ó¤Ë¡¢ µ¬Â§¤ÎÃæ¤Ç¤½¤ì¤é¤¬¤É¤Îµ­¹æ¤ò»²¾È¤¹¤ë¤«¤Ë±þ¤¸¤Æ¡¢ ¥Ç¡¼¥¿·¿¤¬·è¤á¤é¤ì¤Þ¤¹¡£ Îã¤ò¼¨¤·¤Þ¤¹¡£

exp:    …
        | exp '+' exp
            { $$ = $1 + $3; }

$1¤È$3¤Ïexp¤È¤¤¤¦¼ïÎà¤Îµ­¹æ¤ò»²¾È¤¹¤ë¤Î¤Ç¡¢ $1¤È$3¤Ï¡¢Èó½ªÃ¼µ­¹æexp¤ËÂФ·¤ÆÀë¸À¤µ¤ì¤¿ ¥Ç¡¼¥¿·¿¤ò»ý¤Á¤Þ¤¹¡£ ¤â¤·¡¢$2¤¬»È¤ï¤ì¤ë¤Ê¤é¤Ð¡¢¤É¤Î¤è¤¦¤Ê·¿¤Ç¤¢¤ì¡¢ ½ªÃ¼µ­¹æ+¤ËÂФ·¤ÆÀë¸À¤µ¤ì¤¿¥Ç¡¼¥¿·¿¤¬»È¤ï¤ì¤Þ¤¹¡£

Ê̤ÎÊýË¡¤È¤·¤Æ¡¢Ãͤò»²¾È¤¹¤ë¤È¤­¤Ë¤½¤Î¥Ç¡¼¥¿·¿¤ò»ØÄê¤Ç¤­¤Þ¤¹¡£ ¤½¤Î¤¿¤á¤Ë¤Ï¡¢»²¾È¤Î¤¿¤á¤Î‘$’µ­¹æ¤Î¸å¤Ë‘<type>’¤ò ÁÞÆþ¤·¤Þ¤¹¡£Îã¤ò¼¨¤·¤Þ¤¹¡£

%union {
  int itype;
  double dtype;
}

¤³¤Î¾ì¹ç¤Ë¡¢$<itype>1¤È½ñ¤±¤Ð¡¢ ºÇ½é¤ÎÍ×ÁǤòint·¿¤È¤·¤Æ»²¾È¤Ç¤­¡¢$<dtype>1¤È½ñ¤±¤Ð¡¢ double·¿¤È¤·¤Æ»²¾È¤Ç¤­¤Þ¤¹¡£