Previous: Optimizing for Speed, Up: Optimization   [Contents][Index]


6.2 ¥µ¥¤¥º¤ÎºÇŬ²½

Flex¤Ï¡¢ ¥µ¥¤¥º¤Î¾®¤µ¤¤¥¹¥­¥ã¥Ê¤è¤ê¤â¡¢ ¤à¤·¤íÈó¾ï¤Ë¹â®¤Ê¥¹¥­¥ã¥Ê¤òºîÀ®¤¹¤ë¤³¤È¤òÌÜɸ¤È¤·¤Æ¤¤¤Þ¤¹¤¬¡¢ ¤¤¤º¤ì¤Ë¤·¤Æ¤â¡¢ ºîÀ®¤µ¤ì¤ë¥Æ¡¼¥Ö¥ë¤Î¥µ¥¤¥º¤ÏLex¤Ë¤è¤ë¤½¤ì¤ÈÈæ³Ó¤·¤Æ¤â¡¢ Ä̾ï¤Ï¤«¤Ê¤ê¾®¤µ¤¤¤â¤Î¤Ë¤Ê¤ê¤Þ¤¹¡£

¥Ç¥Õ¥©¥ë¥È¤Ç¤Ï¡¢ Flex¤Ï²Äǽ¤Ê¸Â¤ê¥µ¥¤¥º¤Î¾®¤µ¤¤¥¹¥­¥ã¥Ê¤òºîÀ®¤·¤Þ¤¹¡£ ¤³¤ì¤Ï¡¢ ¥³¥Þ¥ó¥É¥é¥¤¥ó¤Ç‘-Cem’¤ò»È¤¦¤Î¤ÈƱÅù¤Ç¤¹¡£ ¥Ç¥Õ¥©¥ë¥È¤ò»È¤¦¤Î¤Ç¤¢¤ì¤Ð¡¢ ¥³¥Þ¥ó¥É¥é¥¤¥ó¡¦¥ª¥×¥·¥ç¥ó¤òµ¤¤Ë¤¹¤ëɬÍפϤ¢¤ê¤Þ¤»¤ó¡£

¤µ¤é¤Ë¥Æ¡¼¥Ö¥ë¤Î¥µ¥¤¥º¤ò¾®¤µ¤¯¤¹¤ë¤Ë¤Ï¡¢ ¤è¤êÂ礭¤Ê¥Æ¥­¥¹¥È¡¦¥°¥ë¡¼¥×¤Ë¥Þ¥Ã¥Á¤¹¤ë¥ë¡¼¥ë¤ò»È¤¤¡¢ »ú¶ç¤ÎÃͤòǧ¼±¤¹¤ë¤¿¤á¤ËC¤Î¥µ¥Ö¥ë¡¼¥Á¥ó¤ò»È¤¦¤Î¤¬ºÇ¤âÎɤ¤ÊýË¡¤Ç¤¹¡£ ¤³¤ÎÎɤ¤Î㤬¥³¥ó¥Ñ¥¤¥é¤Ç¡¢ °Ê²¼¤Î¤è¤¦¤Ê¥ë¡¼¥ë¤òÍ¿¤¨¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£

%%
begin    return(BEGINSYM);
end      return(ENDSYM);
program  return(PROGSYM);
    … 

¤¢¤ë¤¤¤Ï¡¢ °Ê²¼¤Î¤è¤¦¤Ë¥Æ¡¼¥Ö¥ë¸¡º÷¤ò»È¤¦¤³¤È¤â²Äǽ¤Ç¤¹¡£

[a-zA-Z][a-zA-Z0-9]*  return(lookup(yytext));

¤³¤³¤Ç¤Ï¡¢ °ìÈÌŪ¤Ê¥ë¡¼¥ë¤¬»ØÄꤵ¤ì¤Æ¤¤¤Æ¡¢ lookup()¤¬¥Æ¥­¥¹¥È¤ò¥­¡¼¥ï¡¼¥É¤Ë¥Þ¥Ã¥Á¤µ¤»¡¢ ¤½¤Î¥È¡¼¥¯¥ó¤¬²¿¤Ç¤¢¤ë¤«¤ò¼¨¤¹À°¿ôÃͤòÊÖ¤·¤Þ¤¹¡£ ¤³¤ì¤Ë¤è¤ê¡¢ ¥µ¥¤¥º¤Î¤è¤ê¾®¤µ¤¤¥Æ¡¼¥Ö¥ë¤¬À¸À®¤µ¤ì¤Þ¤¹¤¬¡¢ À­Ç½¤Ï°­¤¯¤Ê¤ë·¹¸þ¤¬¤¢¤ê¤Þ¤¹¡£ ¤Þ¤¿¡¢ ¿ô¤¬¾¯¤Ê¤¯Ê£»¨¤Ç¤Ï¤Ê¤¤¥ë¡¼¥ë½¸¹ç¤Ë¤Ä¤¤¤Æ¤Ï¡¢ ¥Æ¡¼¥Ö¥ë¡¦¥µ¥¤¥º¤ò½Ì¾®¤¹¤ë¤³¤È¤Î¸ú²Ì¤Ï¡¢ ¥·¥ó¥Ü¥ë¡¦¥Þ¥Ã¥Ô¥ó¥°ÍѤξðÊó¤ò¥×¥í¥°¥é¥àÃæ¤Î¾¤ÎÎΰè¤Ë³ÊǼ¤·¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¤È¤¤¤¦»ö¼Â¤Ë¤è¤Ã¤Æ¡¢ Á껦¤µ¤ì¤ë¤«¤â¤·¤ì¤Þ¤»¤ó¡£ ¤È¤¤¤¦¤Î¤Ï¡¢ ¥·¥ó¥Ü¥ë¡¦¥Þ¥Ã¥Ô¥ó¥°ÍѤξðÊó¤Ï¡¢ Flex¥Æ¡¼¥Ö¥ë¤ÈÈæ³Ó¤·¤Æ¡¢ ¤è¤ê¿¤¯¤Î¥¹¥Ú¡¼¥¹¤òɬÍפȤ¹¤ë²ÄǽÀ­¤¬¤¢¤ë¤«¤é¤Ç¤¹¡£