Next: , Previous: Calling Convention, Up: Lexical   [Contents][Index]


4.2.2 ¥È¡¼¥¯¥ó¤Î°ÕÌ£ÃÍ

Ä̾ï¤ÎºÆÆþ²Äǽ¤Ç¤Ê¤¤¹½Ê¸²òÀÏ´ï¤Ç¤Ï¡¢ ¥È¡¼¥¯¥ó¤Î°ÕÌ£Ãͤ¬¹­°èÊÑ¿ôyylval¤ËÂåÆþ¤µ¤ì¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£ °ÕÌ£ÃͤËÂФ·¤Æ¤¿¤À1¤Ä¤Î¥Ç¡¼¥¿·¿¤ò»È¤Ã¤Æ¤¤¤ë¾ì¹ç¤Ë¤Ï¡¢ yylval¤Î·¿¤â¤½¤¦¤Ç¤¹¡£ ¤·¤¿¤¬¤Ã¤Æ¡¢¤¿¤È¤¨¤Ð¡¢Àë¸À¤ò¾Êά¤·¤Æ·¿¤¬int¤Ê¤é¤Ð¡¢ ¼¡¤Î¤è¤¦¤Ë½ñ¤±¤Þ¤¹¡£

  …
  yylval = value;  /* ÃͤòBison¥¹¥¿¥Ã¥¯¤ËÀѤࡣ */
  return INT;      /* ¥È¡¼¥¯¥ó·¿¤òÊÖ¤¹¡£ */
  …

Ê£¿ô¤Î¥Ç¡¼¥¿·¿¤ò»È¤Ã¤Æ¤¤¤ë¾ì¹ç¤Ë¤Ï¡¢ %unionÀë¸À¤Çºî¤é¤ì¤¿¶¦ÍÑÂΤ¬yylval¤Î·¿¤Ë¤Ê¤ê¤Þ¤¹ ¡Êsee The Collection of Value Types¡Ë¡£ ¤½¤³¤Ç¡¢¥È¡¼¥¯¥ó¤ÎÃͤòÂåÆþ¤¹¤ë¤Ë¤Ï¡¢ ¶¦ÍÑÂΤΥá¥ó¥Ð¤Î̾Á°¤ò»ØÄꤹ¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£ %unionÀë¸À¤ÎÎã¤ò¼¨¤·¤Þ¤¹¡£

%union {
  int intval;
  double val;
  symrec *tptr;
}

¤¹¤ë¤È¡¢yylex¤ÎÃæ¤Î¥×¥í¥°¥é¥à¤Ï¼¡¤Î¤è¤¦¤Ë¤Ê¤ê¤Þ¤¹¡£

  …
  yylval.intval = value; /* ÃͤòBison¥¹¥¿¥Ã¥¯¤ËÀѤࡣ */
  return INT;          /* ¥È¡¼¥¯¥ó·¿¤òÊÖ¤¹¡£ */
  …