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


3.6.1 ¥È¡¼¥¯¥ó·¿Ì¾

¥È¡¼¥¯¥ó·¿Ì¾¡¢¤¹¤Ê¤ï¤Á½ªÃ¼µ­¹æ¤ò¡¢´ðËÜŪ¤Ë¤Ï¼¡¤Î¤è¤¦¤ËÀë¸À¤·¤Þ¤¹¡£

%token name

Bison¤Ï¡¢¤³¤ì¤ò¡¢¹½Ê¸²òÀÏ´ï¤ÎÃæ¤Î#define¥Ç¥£¥ì¥¯¥Æ¥£¥Ö¤ËÊÑ´¹¤·¤Þ¤¹¡£ ¤·¤¿¤¬¤Ã¤Æ¡¢´Ø¿ôyylex¤¬¹½Ê¸²òÀÏ´ï¥Õ¥¡¥¤¥ë¤ÎÃæ¤Ë¤¢¤ì¤Ð¡¢ ¤½¤³¤Ç̾Á°name¤ò¤³¤Î¥È¡¼¥¯¥ó·¿¤òɽ¤¹¤¿¤á¤Ë»È¤¨¤Þ¤¹¡£

Í¥Àè½ç°Ì¤ò»ØÄꤷ¤¿¤±¤ì¤Ð¡¢%token¤ÎÂå¤ï¤ê¤Ë¡¢ %left¡¢%right¡¢%nonassoc¤Î¤É¤ì¤«¤ò»È¤¤¤Þ¤¹¡£ See Operator Precedence¡£

¥È¡¼¥¯¥ó¤Î̾Á°¤Îľ¸å¤ËÀ°¿ôÃͤò½ñ¤¯¤³¤È¤Ç¡¢ ¤½¤Î¥È¡¼¥¯¥ó·¿¤ËÂбþ¤¹¤ë¿ôÃÍÉ乿¤òÌÀ¼¨Åª¤Ë»ØÄê¤Ç¤­¤Þ¤¹¡£

%token NUM 300

¤·¤«¤·¡¢Bison¤Ë¤¹¤Ù¤Æ¤Î¥È¡¼¥¯¥ó·¿¤ËÂФ¹¤ë¿ôÃÍÉ乿¤Î³ä¤êÅö¤Æ¤ò¤Þ¤«¤»¤ë ¤³¤È¤¬¤¤¤Á¤Ð¤ó¤Ç¤¹¡£Bison¤Ï¡¢¥È¡¼¥¯¥ó·¿¤É¤¦¤·¤äASCIIʸ»úÉ乿¤È ¾×ÆÍ¤¬µ¯¤­¤Ê¤¤¤è¤¦¤Ë¡¢¼«Æ°Åª¤Ë¿ôÃÍÉ乿¤ò³ä¤êÅö¤Æ¤Þ¤¹¡£

¥¹¥¿¥Ã¥¯·¿¤¬¶¦ÍÑÂΤǤ¢¤ë¾ì¹ç¤Ë¤Ï¡¢ %token¤¢¤ë¤¤¤Ï¾¤Î¥È¡¼¥¯¥óÀë¸À¤Ë¡¢ ¾®¤Ê¤êµ­¹æ¤ÈÂç¤Ê¤êµ­¹æ¤Ç¶èÀڤä¿·¿Ì¾¤òÄɲ乤ëɬÍפ¬¤¢¤ê¤Þ¤¹ ¡Êsee More Than One Value Type¡Ë¡£

Îã¤ò¼¨¤·¤Þ¤¹¡£

%union {              /* ¥¹¥¿¥Ã¥¯¤Î¥Ç¡¼¥¿·¿¤òÄêµÁ¤¹¤ë */
  double val;
  symrec *tptr;
}
%token <val> NUM      /* ¥È¡¼¥¯¥ó¡ÖNUM¡×¤È¤½¤Î·¿¤òÄêµÁ¤¹¤ë */

¥È¡¼¥¯¥ó·¿Ì¾¤òÀë¸À¤¹¤ë%tokenÀë¸À¤ÎËöÈø¤Ë ¥ê¥Æ¥é¥ëʸ»úÎó¤ò½ñ¤¯¤³¤È¤Ç¡¢¥ê¥Æ¥é¥ëʸ»úÎó¥È¡¼¥¯¥ó¤È ¥È¡¼¥¯¥ó·¿Ì¾¤ò´ØÏ¢¤Å¤±¤Ç¤­¤Þ¤¹¡£

%token arrow "=>"

C¸À¸ì¤ËÂФ¹¤ëʸˡ¤Ç¤Ï¡¢¼¡¤ÎÎã¤Î¤è¤¦¤Ë¡¢ Åù²Á¤Ê¥ê¥Æ¥é¥ëʸ»úÎó¥È¡¼¥¯¥ó¤Ë̾Á°¤ò»ØÄꤷ¤Æ¤¤¤Þ¤¹¡£

%token  <operator>  OR      "||"
%token  <operator>  LE 134  "<="
%left  OR  "<="

¥ê¥Æ¥é¥ëʸ»úÎó¤È¥È¡¼¥¯¥ó̾¤òÅù²Á¤Ë¤¹¤ì¤Ð¡¢¤½¤ì°Ê¹ß¤Îʸˡµ¬Â§¤Î Àë¸À¤ÎÃæ¤Ç¡¢Î¾¼Ô¤òƱÍͤ˻Ȥ¨¤Þ¤¹¡£ yylex´Ø¿ô¤Ï¡¢¥È¡¼¥¯¥ó·¿¤Î¿ôÃÍÉ乿¤òÆÀ¤ë¤¿¤á¤Ë¡¢ ¥È¡¼¥¯¥ó̾¤È¥ê¥Æ¥é¥ëʸ»úÎó¤ÎξÊý¤ò»È¤¨¤Þ¤¹ ¡Êsee Calling Convention¡Ë¡£