Next: , Previous: Semantic Tokens, Up: Context Dependency   [Contents][Index]


7.2 »ú¶ç²òÀÏ·ë¤ÓÉÕ¤­

ʸ̮°Í¸À­¤ò½èÍý¤¹¤ë1¤Ä¤ÎÊýË¡¤Ï¡¢»ú¶ç²òÀÏ·ë¤ÓÉÕ¤­¡Êlexical tie-in¡Ë¤Ç¡¢ Bison¤Î¥¢¥¯¥·¥ç¥ó¤Ë¤è¤Ã¤ÆÀßÄꤵ¤ì¤ë¥Õ¥é¥°¤¬¡¢ ¥È¡¼¥¯¥ó¤¬¹½Ê¸²òÀϤµ¤ì¤ëÊýË¡¤Ë±Æ¶Á¤·¤Þ¤¹¡£

¤¿¤È¤¨¤Ð¡¢C¸À¸ì¤Ë¤è¤¯»÷¤Æ¤¤¤Æ¡¢‘hex (hex-expr)’¤È¤¤¤¦ ÆÃÊ̤ʹ½Â¤¤ò»ý¤Ä¸À¸ì¤Ë¤Ä¤¤¤Æ¡¢¹Í¤¨¤Æ¤ß¤Þ¤·¤ç¤¦¡£ ͽÌó¸ìhex¤¬¤­¤¿¸å¤Ë¤«¤Ã¤³¤Ç°Ï¤Þ¤ì¤¿¼°¤¬Â³¤¤¤Æ¡¢ ¤½¤Î¤«¤Ã¤³¤ÎÃæ¤Ç¤Ï¤¹¤Ù¤Æ¤ÎÀ°¿ô¤¬16¿Ê¿ô¤Ë¤Ê¤ê¤Þ¤¹¡£ ÆÃ¤Ë¡¢¥È¡¼¥¯¥ó‘a1b’¤Ï¡¢¤³¤Î¤è¤¦¤Êʸ̮¤Ë¸½¤ì¤ì¤Ð¡¢ ¼±Ê̻ҤǤϤʤ¯À°¿ô¤È¤·¤Æ°·¤ï¤ì¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£ ¤É¤Î¤è¤¦¤Ë¤¹¤ì¤Ð¤è¤¤¤«¤ò¼¨¤·¤Þ¤¹¡£

%{
int hexflag;
%}
%%
…
expr:   IDENTIFIER
        | constant
        | HEX '('
                { hexflag = 1; }
          expr ')'
                { hexflag = 0;
                   $$ = $4; }
        | expr '+' expr
                { $$ = make_sum ($1, $3); }
        …
        ;
constant:
          INTEGER
        | STRING
        ;

yylex¤Ï¡¢hexflag¤ÎÃͤ¬0¤Ç¤Ê¤±¤ì¤Ð¡¢ ¤¹¤Ù¤Æ¤ÎÀ°¿ô¤¬16¿Ê¿ô¤Ç¤¢¤ë¤È»ú¶ç²òÀϤ·¡¢ ±Ñ»ú¤Ç»Ï¤Þ¤ë¥È¡¼¥¯¥ó¤â²Äǽ¤Ê¸Â¤êÀ°¿ô¤È²ò¼á¤¹¤ë¤È¡¢²¾Äꤷ¤Þ¤¹¡£

hexflag¤ÎÀë¸À¤Ï¡¢¥¢¥¯¥·¥ç¥ó¤«¤é»²¾È²Äǽ¤Ê¤è¤¦¤Ë¡¢ ʸˡ¥Õ¥¡¥¤¥ë¤ÎCÀë¸ÀÉô¤Ë½ñ¤«¤ì¤ëɬÍפ¬¤¢¤ê¤Þ¤¹ ¡Êsee The C Declarations Section¡Ë¡£ ƱÍͤˡ¢yylex¤Î¥×¥í¥°¥é¥à¤Ë¤â¡¢hexflag¤ÎÀë¸À¤¬É¬ÍפǤ¹¡£