Next: , Previous: Optional C Code, Up: Flex Descriptions   [Contents][Index]


3.3 ÄêµÁ

ÄêµÁ¥»¥¯¥·¥ç¥ó¤Ë¤ª¤¤¤Æ¡¢ ¥×¥í¥°¥é¥Þ¤Ï¡¢ ¤¢¤ëʸ»ú¤Î¥°¥ë¡¼¥×¤Ë°ì°Õ¤Ê¼±Ê̻ҤòÍ¿¤¨¡¢ ¤½¤Î¼±Ê̻Ҥ¬¤½¤Îʸ»ú¥°¥ë¡¼¥×¤ËÃÖ¤­´¹¤¨¤é¤ì¤ë¤è¤¦¤Ë¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£ ÄêµÁ¤Ï°Ê²¼¤Î¤è¤¦¤Ê·Á¼°¤Ë¤Ê¤ê¤Þ¤¹¡£

definition_name    definition

definition_name¤ÏºÇ½é¤Î¥«¥é¥à¤«¤é»Ï¤Þ¤é¤Ê¤±¤ì¤Ð¤Ê¤é¤º¡¢ ¤½¤¦¤·¤Ê¤¤¤È¤½¤ÎÄêµÁ¤Ïlex.yy.c¤Ë¤½¤Î¤Þ¤Þ¥³¥Ô¡¼¤µ¤ì¤Æ¤·¤Þ¤¦¤È¤¤¤¦¤³¤È¤ËÃí°Õ¤·¤Æ¤¯¤À¤µ¤¤¡£ °Ê²¼¤Ë°ìÈÌŪ¤ÊÄêµÁ¤ò¤¤¤¯¤Ä¤«µó¤²¤Þ¤¹¡£

DIGIT     [0-9]
LETTER    [a-z]
IDENT     [a-z_][a-z0-9_]*
ALPHANUM  {LETTER}|{DIGIT}

definition name¤Ï¡¢ ¤½¤Î¥°¥ë¡¼¥×¤Î°ì°Õ¤Ê¼±Ê̻ҤǤʤ±¤ì¤Ð¤Ê¤ê¤Þ¤»¤ó¡£ ¤Þ¤¿¡¢ definition¤Ï¥ë¡¼¥ë¡¦¥»¥¯¥·¥ç¥ó¡Ê¸å½Ò¡Ë¤Ë¤ª¤¤¤ÆÀµÅö¤Ê¤â¤Î¤Ç¤¢¤ì¤Ð²¿¤Ç¤â¹½¤¤¤Þ¤»¤ó¡£ ¥ë¡¼¥ë¡¦¥»¥¯¥·¥ç¥ó¤ä ¡Ê¾å¤ÎÎã¤ÎALPHANUM¤ÎÄêµÁ¤Ë¤ª¤¤¤Æ¼¨¤µ¤ì¤ë¤è¤¦¤Ë¡Ë Ê̤ÎÄêµÁÃæ¤Ë¤ª¤¤¤Æ»È¤ï¤ì¤ë¾ì¹ç¤Ë¤Ï¡¢ ÄêµÁ¤Ï‘{ }’¤Ë¤è¤Ã¤Æ°Ï¤Þ¤ì¤Æ¤¤¤Ê¤±¤ì¤Ð¤Ê¤ê¤Þ¤»¤ó¡£

Flex¤ÈLex¤ÎÈó¾ï¤Ë½ÅÍפÊÁê°ãÅÀ¤Ë¡¢ ÄêµÁ¤òŸ³«¤¹¤ë»þ¡¢ Flex¤Ï»úµÁ¤É¤ª¤ê¤Ë´Ý³ç¸Ì( )¤Ç°Ï¤à¤Î¤ËÂФ·¤Æ¡¢ Lex¤Ï°Ï¤Þ¤Ê¤¤¤È¤¤¤¦ÅÀ¤¬¤¢¤ê¤Þ¤¹¡£1 ¤³¤ì¤Ï¡¢ ‘^’¡¢‘<<EOF>>’¡¢‘$’¡¢‘/’¤òÄêµÁÃæ¤ËÆþ¤ì¤ë¤³¤È¤¬¤Ç¤­¤Ê¤¤¤³¤È¤ò°ÕÌ£¤·¤Æ¤¤¤Þ¤¹¡£ ¤È¤¤¤¦¤Î¤Ï¡¢ Á°½Ò¤Îʸ»ú¤Ï´Ý³ç¸Ì( )¤Ç°Ï¤Þ¤ì¤¿Éôʬ¤ËÆþ¤ì¤ë¤³¤È¤¬¤Ç¤­¤Ê¤¤¤«¤é¤Ç¤¹¡£ ¾ÜºÙ¤Ï¡¢ Characters¤ª¤è¤ÓFlex and Lex¤Ë¤ª¤¤¤ÆÀâÌÀ¤·¤Þ¤¹¡£

Î㤨¤Ð¡¢

FUNCTION ^[a-zA-Z_][a-zA-Z0-9_]*"("
%%
{FUNCTION}  printf("got a function\n");

¤Ï¡¢ °Ê²¼¤Î¤è¤¦¤Ê¥×¥í¥°¥é¥ß¥ó¥°¡¦¥¹¥¿¥¤¥ë¤ò»È¤Ã¤Æ¤¤¤ë¾ì¹ç¤Î¡¢ C¤Î´Ø¿ôÀë¸À¤Ë¥Þ¥Ã¥Á¤¹¤ë¤è¤¦¤Ë¸«¤¨¤Þ¤¹¡£

int
foo()
{
   …
}

¤·¤«¤·¼ÂºÝ¤Ë¤Ï¤¦¤Þ¤¯¤¤¤­¤Þ¤»¤ó¡£ ¤È¤¤¤¦¤Î¤Ï¡¢ {FUNCTION}¤¬Å¸³«¤µ¤ì¤ë¤È¡¢

(^[a-zA-Z_][a-zA-Z0-9_]*)

¤Î¤è¤¦¤Ë¤Ê¤ê¤Þ¤¹¤¬¡¢ ¤³¤ì¤ÏÉÔÀµ¤À¤«¤é¤Ç¤¹¡£ ¤³¤Î¤è¤¦¤Ê¼ïÎà¤ÎÌäÂê¤Ë´Ø¤¹¤ëÀâÌÀ¤Ë¤Ä¤¤¤Æ¤Ï¡¢ Flex and POSIX¤ò»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£


Footnotes

(1)

ÌõÃí¡§Flex 2.5¤Ç¤Ï¡¢ ‘-l’¥ª¥×¥·¥ç¥ó¤ò»ØÄꤷ¤ÆÀ¸À®¤µ¤ì¤¿¥¹¥­¥ã¥Ê¤Ï¡¢ Lex¤Î¾ì¹ç¤ÈƱ¤¸¤è¤¦¤Ë¡¢ ÄêµÁ¤òŸ³«¤¹¤ë»þ¤Ë´Ý³ç¸Ì( )¤Ç°Ï¤ß¤Þ¤»¤ó¡£