Next: Start State Notes (Flex 2.5), Previous: Activating States, Up: Start States [Contents][Index]
°Ê²¼¤Ë¡¢ ¥¹¥¿¡¼¥È¾õÂ֤λÈÍѤ˴ؤ¹¤ëÃí¤ò¤¤¤¯¤Ä¤«¼¨¤·¤Þ¤¹¡£
£±¤Ä¤Î¥ë¡¼¥ë¤Ë¤ª¤¤¤Æ¤Ï¡¢ ñ°ì¤Î¥¹¥¿¡¼¥È¾õÂÖ¡¢ ¤Þ¤¿¤Ï¡¢ ¥«¥ó¥Þ¤Ç¶èÀÚ¤é¤ì¤¿¥¹¥¿¡¼¥È¾õÂ֤Υꥹ¥È¤Î¤ß¤ò»ÈÍѤ¹¤ë¤³¤È¤¬¤Ç¤¤Þ¤¹¡£ ¤Þ¤¿¡¢ ¤³¤¦¤·¤¿¥¹¥¿¡¼¥È¾õÂ֤λØÄê¤Ï¥ë¡¼¥ë¤ÎÀèÆ¬¤Ë¤Ê¤±¤ì¤Ð¤Ê¤ê¤Þ¤»¤ó¡£ ¼¡¤Ë¼¨¤¹¤â¤Î¤ÏÀµÅö¤Ç¤¹¡£
%x state1 %s state2 %% <state1> "something" <state2> "another thing" <state, state2> "something else"
¤·¤«¤·¡¢ ¼¡¤Ë¼¨¤¹¤â¤Î¤ÏÉÔÅö¤Ç¤¹¡£
%x state1 %s state2 %% wrong<state1> <state1><state2>"wrong" <state2>"wrong"<state1>
ÇÓ¾Ū¥¹¥¿¡¼¥È¾õÂ֤ϡ¢ ¾¤Î¤¹¤Ù¤Æ¤Î¾õÂÖ¤ò¡Ö̵¸ú¡×¤Ë¤¹¤ë¤Î¤Ç¡¢ ¶¯ÎϤǤ¹¡£ ¤³¤ì¤Ï¡¢ ¥¹¥¥ã¥Ê¤ÎÆâÉô¤Ë¤ª¤¤¤Æ¤â¤¦£±¤Ä¤Î¥¹¥¥ã¥Ê¤ò¸ú²ÌŪ¤ËÄêµÁ¤¹¤ë¤³¤È¤¬¤Ç¤¤ë¤³¤È¤ò°ÕÌ£¤·¤Æ¤¤¤Þ¤¹¡£ ¤³¤ì¤Ë¤è¤êÎ㤨¤Ð¡¢ ¥¹¥¿¡¼¥È¾õÂÖ¼¡Âè¤Ç¡¢ C¤ÈPascal¤ÎξÊý¤ò¥¹¥¥ã¥ó¤¹¤ë¥¹¥¥ã¥Ê¤òÄêµÁ¤¹¤ë¤³¤È¤¬¡¢ ÍýÏÀŪ¤Ë¤Ï²Äǽ¤Ë¤Ê¤ê¤Þ¤¹¡£ °Ê²¼¤Î¤è¤¦¤Ê¥³¡¼¥É¤¬»ý¤Ä¸ú²Ì¤òÁÛÁü¤·¤Æ¤ß¤Æ¤¯¤À¤µ¤¤¡£
%x PASCAL %x C %% <PASCAL>begin return(OPEN_BLOCK); <PASCAL>end return(CLOSE_BLOCK); <C>{ return(OPEN_BLOCK); <C>} return(CLOSE_BLOCK);
Á°½Ò¤Î¤È¤ª¤ê¡¢
¥¹¥¿¡¼¥È¾õÂ֤Ϥ½¤ì¼«¿È¤Î̾Á°¶õ´Ö¤ò»ý¤Ã¤Æ¤¤¤Þ¤»¤ó¡£
¤½¤ÎÍýͳ¤Ï¡¢
¥¹¥¿¡¼¥È¾õÂÖ¤¬#define
¤È¤Û¤È¤ó¤ÉƱ¤¸ÊýË¡¤ÇÀ°¿ôÃͤȤ·¤ÆÄêµÁ¤µ¤ì¤Æ¤¤¤ë¤«¤é¤Ç¤¹¡£
¤³¤Î¤³¤È¤Ï¡¢
À°¿ôÃÍ¤ÈÆ±ÍÍ¡¢
¥¹¥¿¡¼¥È¾õÂ֤Ρ֥¹¥¿¥Ã¥¯¡×¤Î¤è¤¦¤Ê¤â¤Î¤òºîÀ®¤¹¤ë¤³¤È¤¬²Äǽ¤Ç¤¢¤ë¤³¤È¤ò°ÕÌ£¤·¤Æ¤¤¤Þ¤¹¡£
Î㤨¤Ð¡¢
%{ int last_state[MAX_STATES] int state_count = 0; %} %x FOO BAR baz %% FOO { last_state[state_count] = FOO; state_count++; BEGIN(baz); }
BAR { last_state[state_count] = BAR; state_count++; BEGIN(baz); }
<baz>rule 1 … <baz>rule n <baz>END { statecount--; BEGIN(last_state[statecount]); }
¤ÏFOO
¤ÈBAR
¤ÎξÊý¤Ë¤è¤Ã¤Æbaz
¾õÂÖ¤ò³èÀ²½¤µ¤»¡¢
<baz>END
¤È¤¤¤¦¥ë¡¼¥ë¤Ë¤è¤Ã¤Æ£±¤ÄÁ°¤Î¾õÂÖ¤ËÌᤷ¤Þ¤¹¡£
¤³¤¦¤·¤¿¡Ö¾õÂÖ¥¹¥¿¥Ã¥¯¡×¤Ï¾Íè¡¢
Flex¤ÎÆÃħŪ¤Êµ¡Ç½¤Ë¤Ê¤ë¤«¤â¤·¤ì¤Þ¤»¤ó¡£4
ÌõÃí¡§Flex 2.5¤Ï¡¢ ¥¹¥¿¡¼¥È¾õÂÖ¥¹¥¿¥Ã¥¯¤ò¥µ¥Ý¡¼¥È¤·¤Æ¤¤¤Þ¤¹¡£ ¼¡Àá¡ÊStart State Notes (Flex 2.5)¡Ë¤ò»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£