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)¡Ë¤ò»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£