Next: , Previous: Pattern Matching, Up: Pattern Matching   [Contents][Index]


3.6.1 ʸ»ú

¤¤¤¯¤Ä¤«¤Îʸ»ú¤ÏFlex¤Ë¤È¤Ã¤ÆÆÃÊ̤ΰÕÌ£¤¬¤¢¤ê¡¢ ¤½¤Îʸ»ú¤òñÆÈ¤Ç»È¤Ã¤¿¤Î¤Ç¤Ï¡¢ ¤½¤Îʸ»ú¼«ÂΤòɽ¤¹¤³¤È¤¬¤Ç¤­¤Þ¤»¤ó¡£ °Ê²¼¤Ë¡¢ Flex¤Ë¤ª¤±¤ëÆÃ¼ìʸ»ú¤È¤½¤Î°ÕÌ£¤òɽ¤Ë¤·¤Æ¼¨¤·¤Þ¤¹¡£


ʸ»ú

Flex¤Ë¤è¤ë²ò¼á

.

¥Ô¥ê¥ª¥É¤Ï²þ¹Ô¡Ê‘\n’¡Ë°Ê³°¤ÎǤ°Õ¤Îʸ»ú¤òɽ¤·¤Þ¤¹¡£

\

¥Ð¥Ã¥¯¥¹¥é¥Ã¥·¥å¤Ï¥¨¥¹¥±¡¼¥×ʸ»ú¤Ç¤¹¡£ ¥¨¥¹¥±¡¼¥×¡¦¥·¡¼¥±¥ó¥¹¤ÏANSI C¤Î¤â¤Î¤ÈƱ°ì¤Ç¤¹¡£

[ ]

³Ñ³ç¸Ì[ ]¤ÏÊ£¿ô¤Îʸ»ú¤òʸ»ú¥¯¥é¥¹¤Ë¥°¥ë¡¼¥×²½¤·¤Þ¤¹¡£ ¾ÜºÙ¤Ë¤Ä¤¤¤Æ¤Ï¡¢ See Flex¤Ë¤ª¤±¤ëʸ»ú¤Î¥°¥ë¡¼¥×²½¡£

^

ʸ»ú¥¯¥é¥¹¤ÎÆâÉô¤Ç¤Ï^¤ÏÈÝÄê¤ò°ÕÌ£¤·¤Þ¤¹¡£ ¾ÜºÙ¤Ë¤Ä¤¤¤Æ¤Ï¡¢ See Flex¤Ë¤ª¤±¤ëʸ»ú¤Î¥°¥ë¡¼¥×²½¡£ ʸ»ú¥¯¥é¥¹¤Î³°Éô¤Ç¤Ï¡¢ ^¤Ï¹Ô¤ÎÀèÆ¬¤ò°ÕÌ£¤·¡¢ ¥ë¡¼¥ë¤ÎÀèÆ¬¤Ë¤Î¤ßÃÖ¤¯¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£ Îã¤ò°Ê²¼¤Ë¼¨¤·¤Þ¤¹¡£

[^AB]

ÈÝÄꥯ¥é¥¹¤Ç¤¹¡£

^foo

¹Ô¤ÎÀèÆ¬¤Ë¤¢¤ë‘foo’¤È¤¤¤¦Ê¸»ú¤ÎʤӤˤΤߥޥåÁ¤·¤Þ¤¹¡£

foo^

¤³¤Î¾ì¹ç¡¢ ‘^’¤ÏÉáÄ̤Îʸ»ú¤Ç¤¢¤ë¤È¤ß¤Ê¤µ¤ì¤Þ¤¹¡£ ¤³¤Î¤è¤¦¤Ê»þ¤Ë¤Ï¡¢ ´õ˾¤É¤ª¤ê¤Î·ë²Ì¤¬³Î¼Â¤ËÆÀ¤é¤ì¤ë¤è¤¦¤Ë¤¹¤ë¤¿¤á¤Ë¡¢ ÆÃÊ̤ʰÕÌ£¤ò»ý¤Äʸ»ú¤ÎÁ°¤Ë¥Ð¥Ã¥¯¥¹¥é¥Ã¥·¥å‘\’¤òÃÖ¤¯¤Î¤¬Îɤ¤¤Ç¤·¤ç¤¦¡£ ¤³¤Î¤è¤¦¤Êʸ»ú¤ÎʤӤò¥¨¥¹¥±¡¼¥×¡¦¥·¡¼¥±¥ó¥¹¤È¸Æ¤Ó¤Þ¤¹¡£ ¥¨¥¹¥±¡¼¥×¡¦¥·¡¼¥±¥ó¥¹¤Ë¤Ä¤¤¤Æ¤Ï¤³¤ÎÀá¤ÎºÇ¸å¤ÇÀâÌÀ¤·¤Þ¤¹¡£

-

¥Ï¥¤¥Õ¥ó¤Ïʸ»ú¥¯¥é¥¹¤ÎÆâÉô¤Ë¤ª¤¤¤ÆÊ¸»ú¤ÎÈϰϤòɽ¤·¤Þ¤¹¡£ ʸ»ú¥¯¥é¥¹¤Î³°Éô¤Ç¤Ï¡¢ ¥Ï¥¤¥Õ¥ó¤Ï¤½¤ì¼«¿È¤òɽ¤·¤Þ¤¹¡£ ¾ÜºÙ¤Ë¤Ä¤¤¤Æ¤Ï¡¢ See Flex¤Ë¤ª¤±¤ëʸ»ú¤Î¥°¥ë¡¼¥×²½¡£

{ }

Âç³ç¸Ì{ }¤Ï¡¢ ÄêµÁ¤Î»²¾È¡¢Ê£¿ô¹Ô¤Î¥¢¥¯¥·¥ç¥ó¤Î°Ï¤ß¡¢¤Þ¤¿¤Ï¤¢¤ëÈϰϤˤ錄¤ë·«¤êÊÖ¤·¤ÎÄêµÁ¤ò¹Ô¤¤¤Þ¤¹¡£ Îã¤òµó¤²¤ë¤È¡¢ ÄêµÁFOO¤¬¤¢¤Ã¤Æ¡¢ ¤½¤ì¤ò¥ë¡¼¥ë¤ÎÃæ¤Ç»²¾È¤·¤¿¤¤¾ì¹ç¤Ë{FOO}¤ò»È¤¤¤Þ¤¹¡£

Í¿¤¨¤é¤ì¤¿¥Ñ¥¿¡¼¥ó¤Î¤¢¤ëÈϰϤˤ錄¤ë·«¤êÊÖ¤·¤òÄêµÁ¤¹¤ë¤Ë¤Ï¡¢ °Ê²¼¤Î¤è¤¦¤Ê‘{ repetition list }’¤ò»È¤¤¤Þ¤¹¡£

%%
f{2,5}  /* f¤Î£²²ó°Ê¾å£µ²ó°Ê²¼¤Î·«¤êÊÖ¤· */
        /* ¤Ë¥Þ¥Ã¥Á                      */
f{2,}   /* f¤Î£²²ó°Ê¾å¤Î·«¤êÊÖ¤·¤Ë¥Þ¥Ã¥Á */
f{2}    /* f¤Î£²²ó¤Î·«¤êÊÖ¤·¤Ë¥Þ¥Ã¥Á     */

¤³¤ÎÍÑË¡¤Î²ò¼á¤Ë¤ª¤¤¤Æ¡¢ Flex¤ÈLex¤Î´Ö¤Ë¤Ï¤¤¤¯¤Ä¤«¤ÎÁê°ãÅÀ¤¬¤¢¤ê¤Þ¤¹¡£ ¾ÜºÙ¤Ë¤Ä¤¤¤Æ¤Ï¡¢ Flex and POSIX¤ò»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£

( )

´Ý³ç¸Ì( )¤ò»È¤Ã¤ÆÍ¥Àè½ç°Ì¤òÊѹ¹¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£ ¤Þ¤¿¡¢ ÄêµÁ¤¬Å¸³«¤µ¤ì¤ë»þ¤Ë¤Ï¡¢ ¤½¤ÎÄêµÁ¤Ï°ÅÌۤΤ¦¤Á¤Ë´Ý³ç¸Ì( )¤Ç°Ï¤Þ¤ì¤ë¤³¤È¤ËÃí°Õ¤·¤Æ¤¯¤À¤µ¤¤¡£2 ¤³¤Î¤¿¤á¡¢ Lex¤È¤ÏÈó¸ß´¹¤Ê¤È¤³¤í¤¬¤Ç¤Æ¤­¤Þ¤¹¡£ ¤³¤ÎÅÀ¤Ë¤Ä¤¤¤Æ¤Ï¡¢ Flex and POSIX¤ÈDefinitions¤ÇÀâÌÀ¤·¤Æ¤¤¤Þ¤¹¡£

""

Æó½Å°úÍÑÉäµ­¹æ¤Ïʸ»úÎó¤òɽ¤·¤Þ¤¹¡£ °úÍÑÉä¤ÎÆâ¦¤Îʸ»úÎó¤À¤±¤¬¥Þ¥Ã¥Á¤ÎÂоݤˤʤê¤Þ¤¹¡£ ¤·¤¿¤¬¤Ã¤Æ¡¢

%%
"string"

¤Ï"string"¤Ë¤Ç¤Ï¤Ê¤¯¡¢ string¤Ë¥Þ¥Ã¥Á¤·¤Þ¤¹¡£

/

¥¹¥é¥Ã¥·¥å¤Ï¸å³¥³¥ó¥Æ¥­¥¹¥È¡Êtrailing context¡Ë¤òÀßÄꤷ¤Þ¤¹¡£ ¤³¤ì¤Ï¡¢ ¤¢¤ë¥Ñ¥¿¡¼¥ó¤Î¸å¤í¤ËÆÃÄê¤Îʸ»ú¤ÎʤӤ¬Â³¤¯¾ì¹ç¤Î¤ß¡¢ ¤½¤Î¥Ñ¥¿¡¼¥ó¤òǧ¼±¤·¤¿¤¤¤È¤¤¤¦¾õ¶·¤Ç¤¹¡£ ¤Ä¤Þ¤ê¡¢ ¥¹¥é¥Ã¥·¥å‘/’¤Ï¡Ö¥ë¥Ã¥¯¡¦¥¢¥Ø¥Ã¥É¡Ê¤½¤ÎÀè¤ò¸«¤ë¡Ë¡×±é»»»Ò¤È¤·¤Æµ¡Ç½¤¹¤ë¤È¤¤¤¦¤³¤È¤Ç¤¹¡£ Îã¤òµó¤²¤ë¤È¡¢

abcDEF

abcDEF’ ¤òǧ¼±¤·¤Þ¤¹¡£

abc/DEF

abc’¤Î¸å¤í¤Ë‘DEF’¤¬Â³¤¯¾ì¹ç¤Ë¸Â¤ê¡¢ ‘abc’¤òǧ¼±¤·¤Þ¤¹¡£ ‘DEF’¤ÎÉôʬ¤Ï¡¢ ¤¢¤¿¤«¤â¤Þ¤ÀÆÉ¤Þ¤ì¤Æ¤Ï¤¤¤Ê¤¤¤«¤Î¤è¤¦¤Ë°·¤ï¤ì¡¢ ¥Þ¥Ã¥Á¤ÎÂоݤˤʤê¤Þ¤»¤ó¡£

Ãí¡§£±¤Ä¤Î¥ë¡¼¥ë¤ÎÃæ¤Ç¤Ï‘/’¤Ï£±¤Ä¤À¤±µö¤µ¤ì¤Þ¤¹¡£ ¤Ä¤Þ¤ê¡¢

abc/def/hijkl

¤ÏÉÔÀµ¤Ç¤¹¡£

< >

¤«¤®³ç¸Ì< >¤Ï¥¹¥¿¡¼¥È¾õÂÖ¤ò»²¾È¤·¤Þ¤¹¡£ ¤Þ¤¿¡¢ EOF¥·¥ó¥Ü¥ë¡Ê‘<<EOF>>’¡Ë¤Ë¤â»È¤ï¤ì¤Þ¤¹¡£ ´°Á´¤ÊÀâÌÀ¤Ë¤Ä¤¤¤Æ¤Ï¡¢ Start States¤ÈEnd-Of-File Rules¤ò»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£

? + *

?’¡¢‘+’¡¢‘*’¤Ï¡¢ ¤¢¤ëÀµµ¬É½¸½¤¬¸½¤ì¤ë¤³¤È¤Î¤Ç¤­¤ë²ó¿ô¤òÀßÄꤷ¤Þ¤¹¡£ ‘?’¤Ï£°²ó¤â¤·¤¯¤Ï£±²ó ¡Ê¤½¤ÎÀµµ¬É½¸½¤¬¸½¤ì¤ë¤³¤È¤Ïɬ¿Ü¤Ç¤Ï¤Ê¤¤¤È¤¤¤¦¤³¤È¡Ë ¤ò°ÕÌ£¤·¤Þ¤¹¡£ ‘+’¤Ï£±²ó°Ê¾å¤ò°ÕÌ£¤·¤Þ¤¹¡£ ‘*’¤Ï£°²ó°Ê¾å¤ò°ÕÌ£¤·¤Þ¤¹¡£ Î㤨¤Ð¡¢

a?

£°¸Ä¤â¤·¤¯¤Ï£±¸Ä¤Îa¤Ë¥Þ¥Ã¥Á¤·¤Þ¤¹¡£

a+

£±¸Ä°Ê¾å¤Îa¤Ë¥Þ¥Ã¥Á¤·¤Þ¤¹¡£

a*

£°¸Ä°Ê¾å¤Îa¤Ë¥Þ¥Ã¥Á¤·¤Þ¤¹¡£

(ABC)+

ABC’¤È¤¤¤¦Ê¸»ú¤ÎʤӤ¬£±²ó°Ê¾å³¤¯¤â¤Î¤Ë¥Þ¥Ã¥Á¤·¤Þ¤¹¡£

[abQrS]?

£°¸Ä¤â¤·¤¯¤Ï£±¸Ä¤Î¡¢ ¡Ê£µ¤Ä¤Îʸ»ú‘abQrS’¤«¤é¹½À®¤µ¤ì¤ë¡Ë ¤³¤Îʸ»ú¥¯¥é¥¹¤Î¥á¥ó¥Ð¤Ë¥Þ¥Ã¥Á¤·¤Þ¤¹¡£ ʸ»ú¥¯¥é¥¹¤Ë´Ø¤¹¤ë¾ÜºÙ¤Ë¤Ä¤¤¤Æ¤Ï¡¢ Flex¤Ë¤ª¤±¤ëʸ»ú¤Î¥°¥ë¡¼¥×²½¤ò»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£

{NUM}*

£°¸Ä°Ê¾å¤ÎNUM¤Ë¥Þ¥Ã¥Á¤·¤Þ¤¹¡£ ¤³¤³¤Ç¤ÎNUM¤ÏÄêµÁ¤Ç¤¹¡£ ÄêµÁ¤Ë´Ø¤¹¤ë¾ÜºÙ¤Ë¤Ä¤¤¤Æ¤Ï¡¢ Definitions¤ò»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£

|

OR±é»»»Ò¡¢ ¤ª¤è¤Ó¡¢ ÆÃÊ̤ʥ¢¥¯¥·¥ç¥ó¤òɽ¤·¤Þ¤¹¡£ Î㤨¤Ð¡¢

   apples|oranges

¤Ïapples¤â¤·¤¯¤Ïoranges¤Î¤¤¤º¤ì¤«¤Ë¥Þ¥Ã¥Á¤·¡¢

apples         |
oranges        printf("fruit!\n"); 

¤Ï¡¢ apples¤Èoranges¤ÎξÊý¤ËÂФ·¤ÆÆ±°ì¤Î¥¢¥¯¥·¥ç¥ó¤ò¼Â¹Ô¤·¤Þ¤¹¡£

$

¥É¥ëµ­¹æ¤Ï¹ÔËö¤ò°ÕÌ£¤·¤Þ¤¹¡£ Î㤨¤Ð¡¢

   end$

¤Ï¤½¤Îľ¸å¤¬¹ÔËö¤Ç¤¢¤ë¾ì¹ç¤Ë¤Î¤ß‘end’¤È¤¤¤¦Ê¸»ú¤ÎʤӤ˥ޥåÁ¤·¤Þ¤¹¡£ ¤³¤ì¤Ï¡¢ ¸å¤í¤Ë³¤¯¤Î¤¬¹ÔËö¤Î¥Þ¡¼¥«¤Ç¤¢¤ë¾ì¹ç¤Î¤ß‘end’¤Ë¥Þ¥Ã¥Á¤¹¤ë

   end/\n

¤È¤Þ¤Ã¤¿¤¯Æ±¤¸¤Ç¤¹¡£

¤³¤¦¤·¤¿Ê¸»ú¤Î¤¤¤º¤ì¤«¤ò¤½¤Îʸ»ú¼«¿È¤È¤·¤ÆÉ½¤·¤¿¤¤¾ì¹ç¤Ë¤Ï¡¢ °úÍÑÉä¤Ç°Ï¤à¤«¡¢ ¡Ê¸å¤Ë¼¨¤¹É½¤ÇÀâÌÀ¤¹¤ë¡Ë ¥¨¥¹¥±¡¼¥×¡¦¥·¡¼¥±¥ó¥¹¤È¤·¤ÆÉ½¤µ¤Ê¤±¤ì¤Ð¤Ê¤ê¤Þ¤»¤ó¡£

Flex¤Ë¤Ï£³¼ïÎà¤Î¥¨¥¹¥±¡¼¥×¡¦¥·¡¼¥±¥ó¥¹¤¬¤¢¤ê¤Þ¤¹¡£ ¥Ð¥Ã¥¯¥¹¥é¥Ã¥·¥å‘\’¤Ë³¤±¤Æ8¿Ê¿ô¤ò»È¤¦¤â¤Î¡¢ ‘\x’¤Ë³¤±¤Æ16¿Ê¿ô¤ò»È¤¦¤â¤Î¡¢ ‘\letter’¤È¤¤¤¦É½µ­Ë¡¤Ë¤è¤Ã¤Æ¤¢¤ë£±Ê¸»ú¡¢ ¤Þ¤¿¤Ï¡¢ ÆÃÊ̤Êɽ¼¨ÉԲĤÎʸ»ú¤òɽ¤¹¤â¤Î¤Î£³¤Ä¤Ç¤¹¡£ C¤ò¤è¤¯ÃΤäƤ¤¤ë¿Í¤Ç¤¢¤ì¤Ð¡¢ ¤³¤Î£³¤Ä¤¬ANSI C¤Î¥¨¥¹¥±¡¼¥×¡¦¥·¡¼¥±¥ó¥¹¤Ç¤¢¤ë¤³¤È¤Ëµ¤¤¬¤Ä¤¯¤³¤È¤Ç¤·¤ç¤¦¡£ ¿ôÃͤˤè¤ë¥¨¥¹¥±¡¼¥×¡¦¥·¡¼¥±¥ó¥¹¤Ï¡¢ 100¥Ñ¡¼¥»¥ó¥È°Ü¿¢À­¤¬¤¢¤ë¤ï¤±¤Ç¤Ï¤Ê¤¯¡¢ Êݼé¤òº¤Æñ¤Ë¤¹¤ë¤Î¤Ç¡¢ Èò¤±¤ë¤Ù¤­¤Ç¤¹¡£

°Ê²¼¤Ë¡¢ ʸ»ú¤Î»ÈÍѤ˴ؤ¹¤ëÍ×Ìó¤ò¼¨¤·¤Þ¤¹¡£ ¤³¤ÎÉ½Ãæ¤Ç¤Ï¡¢ ‘c’¤¬Ã±°ì¤Îʸ»ú¤ò¡¢ ‘NNN’¤¬8¿ÊÄê¿ô¤ò¡¢ ‘HH’¤¬16¿ÊÄê¿ô¤òɽ¤·¤Þ¤¹¡£


Ãí¡§¤¤¤¯¤Ä¤«¤Î¥Ð¡¼¥¸¥ç¥ó¤ÎLex¤Ç¤Ï¡¢ ‘\0’¤òÀµ¤·¤¯Ç§¼±¡¢ ¤Þ¤¿¤Ï¥Þ¥Ã¥Á¤·¤Þ¤»¤ó¡£ ¤³¤ì¤Ï¡¢ ‘\0’¤¬NUL¡¢ ¤Ä¤Þ¤êCʸ»úÎó¤Î½ªÃ¼Ê¸»ú¤À¤«¤é¤Ç¤¹¡£ Flex¤Ç¤Ï¡¢ NUL¤ò¥Þ¥Ã¥Á¤ÎÂоݤˤ·¤Æ¤âÌäÂê¤Ï¤¢¤ê¤Þ¤»¤ó¤¬¡¢ À­Ç½¤Ë¤Ï¼ã´³±Æ¶Á¤·¤Þ¤¹¡£

¤µ¤é¤ËÉÕ¤±²Ã¤¨¤ë¤È¡¢ ‘^’±é»»»Ò¤È‘<<EOF>>’¤Ï¥ë¡¼¥ë¤ÎÀèÆ¬¤Ë¤Î¤ßÃÖ¤¯¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£ ¤Þ¤¿¡¢ ¤³¤ì¤é¤È‘$’¡¢‘/’¤Ï´Ý³ç¸Ì( )¤ÎÆâÉô¤ËÃÖ¤¯¤³¤È¤Ï¤Ç¤­¤Þ¤»¤ó¡£ ¤³¤Î¤³¤È¤Ï¤Þ¤¿¡¢ ÄêµÁ¤ÎÀµÅöÀ­¤Ë¤â±Æ¶Á¤òµÚ¤Ü¤·¤Þ¤¹¡£ ¤È¤¤¤¦¤Î¤Ï¡¢ Ÿ³«¤µ¤ì¤ë»þ¤ËÄêµÁ¤Ï»úµÁ¤É¤ª¤ê¤Ë´Ý³ç¸Ì( )¤Ç°Ï¤Þ¤ì¤ë¤«¤é¤Ç¤¹¡£3 ¾ÜºÙ¤Ë¤Ä¤¤¤Æ¤Ï¡¢ Definitions¤ÈFlex and POSIX¤ò»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£


Footnotes

(2)

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

(3)

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


Next: , Previous: Pattern Matching, Up: Pattern Matching   [Contents][Index]