Next: Flex and POSIX (Flex 2.5), Previous: Flex, Up: Flex [Contents][Index]
Flex¤Ï¡¢ ÂçÂΤΤȤ³¤íLex¤ª¤è¤ÓPOSIX¤ÎξÊý¤È¸ß´¹À¤¬¤¢¤ê¤Þ¤¹¡£ ¾Íè¤Ï ¡ÊFlex¡¢POSIX¤Î¤É¤Á¤é¤«¤¬ÊѤï¤ë¤³¤È¤Ë¤è¤Ã¤Æ¡Ë¡¢ ¤µ¤é¤ËPOSIX¤È¤Î¸ß´¹À¤ò¹â¤á¤Æ¤¤¤¯¤Ç¤·¤ç¤¦¡£ ¤·¤«¤·¡¢ Flex¡¢Lex¡¢POSIX¤Ë¤Ï¡¢ °Û¤Ê¤ëÉôʬ¤â¤¤¤¯¤Ä¤«¤¢¤ê¤Þ¤¹¡£ ¤½¤ì¤ò°Ê²¼¤Ë¼¨¤·¤Þ¤¹¡£
Flex¤ÈPOSIX¤ÏÇÓ¾Ū¥¹¥¿¡¼¥È¾õÂÖ¤ò¥µ¥Ý¡¼¥È¤·¤Æ¤¤¤Þ¤¹¤¬¡¢ Lex¤Ï¥µ¥Ý¡¼¥È¤·¤Æ¤¤¤Þ¤»¤ó¡£
Lex¤ÈFlex¤Ç¤ÏÄêµÁ¤ÎŸ³«¤ÎÊýË¡¤¬°ã¤¤¤Þ¤¹¡£ Flex¡Ê¤ª¤è¤ÓPOSIX¤Î¥É¥é¥Õ¥È»ÅÍ͡ˤϡ¢ ÄêµÁ¤òŸ³«¤¹¤ë»þ¤Ë´Ý³ç¸Ì( )¤Ç°Ï¤ß¤Þ¤¹¤¬¡¢ Lex¤Ï°Ï¤ß¤Þ¤»¤ó¡£13 ¤³¤Î¤³¤È¤Ï¡¢ FlexÄêµÁ¤Ç¤Ï±é»»»Ò‘^’¡¢‘$’¡¢‘/’¡¢‘<<EOF>>’¡¢¤ª¤è¤Ó‘<start state>’¤Ï»È¤¦¤³¤È¤¬¤Ç¤¤Ê¤¤¤È¤¤¤¦¤³¤È¤ò°ÕÌ£¤·¤Æ¤¤¤Þ¤¹¡£
¤³¤Î¤³¤È¤¬¤â¤¿¤é¤¹¼çÍפÊÌäÂê¤Î£±¤Ä¤Ë¡¢ ¥Þ¥Ã¥Á¤ÎÍ¥Àè½ç°Ì¤Ë±Æ¶Á¤òÍ¿¤¨¡¢ Flex¤ÈLex¤Î´Ö¤Ç¥¹¥¥ã¥ó½èÍý¤ËÈù̯¤Êº¹°Û¤¬½Ð¤Æ¤¯¤ë¤È¤¤¤¦¤³¤È¤¬¤¢¤ê¤Þ¤¹¡£ ¤³¤ÎÌäÂê¤ÎÎã¤Ë¤Ä¤¤¤Æ¤Ï¡¢ ¥Ñ¥¿¡¼¥ó¡¦¥»¥¯¥·¥ç¥ó¤ò»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£
input()
Flex¤ª¤è¤ÓPOSIX¤Î¥É¥é¥Õ¥È»ÅÍͤǤϡ¢
input()
¤ÏºÆÄêµÁ²Äǽ¤Ç¤Ï¤¢¤ê¤Þ¤»¤ó¡£
Flex¤ÇÆþÎϤòÀ©¸æ¤¹¤ë¤¿¤á¤Ë¤Ï¡¢
input()
¤òºÆÄêµÁ¤¹¤ëÂå¤ï¤ê¤Ë¡¢
YY_INPUT
¤È¤¤¤¦³ÈÄ¥µ¡Ç½¤ò»È¤¤¤Þ¤¹
¡Ê¤³¤ì¤Ï¸½ºß¤Î¤È¤³¤íPOSIX¤Ç¤Ï¥µ¥Ý¡¼¥È¤µ¤ì¤Æ¤¤¤Þ¤»¤ó¡Ë¡£
¤Þ¤¿¡¢
Lex¤È¤Ï°Û¤Ê¤ê¡¢
Flex¤Îinput()
¤Ïyytext
¤ÎÃͤòÊѹ¹¤¹¤ë¤È¤¤¤¦ÅÀ¤ËÃí°Õ¤·¤Æ¤¯¤À¤µ¤¤¡£
output()
Flex¤Ïoutput()
¥ë¡¼¥Á¥ó¤ò¥µ¥Ý¡¼¥È¤·¤Æ¤¤¤Þ¤»¤ó¡£
ECHO
¤Î½ÐÎϤÏyyout
·Ðͳ¤Ç¹Ô¤ï¤ì¤Þ¤¹¡£
¤³¤Îyyout
¤Î¥Ç¥Õ¥©¥ë¥È¤Ïstdout
¤Ç¤¹¡£
¤³¤ì¤ò»È¤¦¤è¤¦¤Ëoutput()
¤ò½ñ¤¯¤³¤È¤â²Äǽ¤Ç¤¹¤¬¡¢
¸½ºß¤ÎPOSIX¤Î¥É¥é¥Õ¥È»ÅÍͤϡ¢
output()
¤¬Àµ³Î¤Ë¤Ï²¿¤ò¤¹¤Ù¤¤Ê¤Î¤«¤ò¼¨¤·¤Æ¤¤¤Þ¤»¤ó¡£
Flex¡¢POSIX¤Î¤É¤Á¤é¤â¡¢
Lex¤ÎRatfor14¥¹¥¥ã¥Ê¡¦¥ª¥×¥·¥ç¥ó¡Ê%r
¡Ë¤ò¥µ¥Ý¡¼¥È¤·¤Æ¤¤¤Þ¤»¤ó¡£
yylineno
¤³¤ì¤Ï¡¢ Flex¤äPOSIX¤Ë¤Ï¸ºß¤·¤Ê¤¤¡¢ ¥É¥¥å¥á¥ó¥È²½¤µ¤ì¤Æ¤¤¤Ê¤¤Lex¤Îµ¡Ç½¤Ç¤¹¡£15 ¤·¤«¤·¡¢ Flex¤Ç¹Ô¿ô¤ò¥«¥¦¥ó¥È¤¹¤ëµ¡Ç½¤ò¼ÂÁõ¤¹¤ë¤Î¤ÏÆñ¤·¤¯¤¢¤ê¤Þ¤»¤ó¡£ ÄêµÁÃæ¤Ë¹Ô¿ô¥«¥¦¥ó¥Èµ¡Ç½¤òÁȤ߹þ¤àÊýË¡¤ÎÎã¤Ë¤Ä¤¤¤Æ¤Ï¡¢ See Miscellaneous¤ò»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£
yywrap()
¸½ºß¤Î¤È¤³¤íyywrap()
¤Ï¥Þ¥¯¥í¤Ç¤¹¡£
POSIX¤Î¥É¥é¥Õ¥È»ÅÍͤǤϡ¢
¤³¤ì¤Ï´Ø¿ô¤Ç¤¢¤ë¤Ù¤¤È¤µ¤ì¤Æ¤¤¤Þ¤¹¤Î¤Ç¡¢
¤ª¤½¤é¤¯¾Íè¤ÏÊѹ¹¤µ¤ì¤ë¤³¤È¤Ë¤Ê¤ë¤Ç¤·¤ç¤¦¡£16
unput()
¸½ºß¤Î¤È¤³¤íunput()
¤Ïyytext
¤Èyyleng
¤ÎÃͤòÇ˲õ¤·¤Þ¤¹¤¬¡¢
¼¡¤Î¥È¡¼¥¯¥ó¤¬¥Þ¥Ã¥Á¤µ¤ì¤ë¤Þ¤Ç¤Ï¡¢
¤³¤ì¤ÏÉÔÅö¤Ç¤¹¡£
Lex¤ÈPOSIX¤Ç¤Ï¡¢
yytext
¤Èyyleng
¤Ïunput()
¤Î±Æ¶Á¤ò¼õ¤±¤Þ¤»¤ó¡£17
POSIX ¤Ë¤è¤ë¤È¡¢
‘abc{1,3}’¤Ï
¡Öab
¤Î¸å¤í¤Ë£±¸Ä¡¢£²¸Ä¡¢¤Þ¤¿¤Ï£³¸Ä¤Îc
¤¬Â³¤¯¤â¤Î¡×
¤Ë¥Þ¥Ã¥Á¤¹¤Ù¤¤È¤Ê¤Ã¤Æ¤¤¤Þ¤¹¡£
Flex¤Ï¤³¤Î¤È¤ª¤ê¤Ëư¤¤Þ¤¹¤¬¡¢
Lex¤Ï¤³¤ì¤ò
¡Ö£±¸Ä¡¢£²¸Ä¡¢¤Þ¤¿¤Ï£³¸Ä¤Îabc
¡×
¤È²ò¼á¤·¤Þ¤¹¡£
yytext
Flex¤Ë¤ª¤¤¤Æyytext
¤ÎÀµ¤·¤¤ÄêµÁ¤Ï‘extern char *yytext’¤Ç¤¹¤¬¡¢
Lex¤Ç¤Ï‘extern char yytext[]’¤Ç¤¹¡£18
ÇÛÎó¤Ë¤è¤ë¥¢¥¯¥»¥¹ÊýË¡¤Ï¡¢
Àǽ¤Ë¤«¤Ê¤ê¤Î±Æ¶Á¤òµÚ¤Ü¤¹¤Î¤Ç¡¢
Flex¤Ç¤Ï‘extern char *yytext’¤ò»È¤¤Â³¤±¤ë¤Ç¤·¤ç¤¦¡£
ºÇ¿·¤ÎPOSIX¥É¥é¥Õ¥È»ÅÍͤϡ¢ ‘%array’¤È‘%pointer’¤òƳÆþ¤¹¤ë¤³¤È¤Ë¤è¤Ã¤Æ¡¢ ξÊý¤ÎÊýË¡¤ò¥µ¥Ý¡¼¥È¤·¤Æ¤¤¤Þ¤¹¡£ ¤³¤ì¤Ï¡¢ Flex¤ÈLex¤Î¤¤¤º¤ì¤Ë¤â¤Þ¤ÀÁȤ߹þ¤Þ¤ì¤Æ¤¤¤Þ¤»¤ó¡£19
Lex¤Ë¤Ï¥Æ¡¼¥Ö¥ë¡¦¥µ¥¤¥ºÀë¸À»Ò¡Ê%p
¡¢%a
Åù¡Ë¤¬¤¢¤ê¤Þ¤¹¤¬¡¢
Flex¤Ç¤ÏɬÍפ¢¤ê¤Þ¤»¤ó¡£
¸ß´¹À¤Î¤¿¤á¤Ëǧ¼±¤Ï¤µ¤ì¤Þ¤¹¤¬¡¢
̵»ë¤µ¤ì¤ë¤À¤±¤Ç¤¹¡£
FLEX_SCANNER
¥¹¥¥ã¥Ê¤¬Flex¤ÈLex¤Î¤É¤Á¤é¤Ë¤è¤êÀ¸À®¤µ¤ì¤¿¤«¤Ë¤è¤Ã¤Æ¡¢
¥³¡¼¥É¤ò¥¤¥ó¥¯¥ë¡¼¥É¤·¤¿¤ê¤·¤Ê¤«¤Ã¤¿¤ê¤¹¤ë¤³¤È¤¬¤Ç¤¤ë¤è¤¦¤Ë¡¢
FLEX_SCANNER
¤¬#define
¤Ë¤è¤Ã¤ÆÄêµÁ¤µ¤ì¤Æ¤¤¤Þ¤¹¡£
Flex¤Ç¤Ï¡¢
Âç³ç¸Ì¤ÎÂÐ{…}
¤ò»È¤¦¤³¤È¤Ê¤¯¡¢
ñ°ì¹Ô¤Ë¤ª¤¤¤ÆÊ£¿ô¤Îʸ¤òÃÖ¤¯¤³¤È¤¬¤Ç¤¤Þ¤¹¡£
¤³¤ì¤ËÂФ·¤ÆLex¤Ï¡¢
¤½¤Î¤è¤¦¤Ê¹Ô¤òñ°ìʸ¤ËÀÚ¤êµÍ¤á¤Æ¤·¤Þ¤¤¤Þ¤¹¡£
Flex¤Ç¤Ï¥³¥á¥ó¥È¤ò‘#’¤Ç»Ï¤á¤ë¤³¤È¤¬¤Ç¤¤Þ¤¹¤¬¡¢ Lex¤ÈPOSIX¤Ç¤Ï¤Ç¤¤Þ¤»¤ó¡£ ¤¿¤À¤·¡¢ ¤³¤Î·Á¼°¤Î¥³¥á¥ó¥È¤ò»È¤¦¤³¤È¤Ï¤ª´«¤á¤Ç¤¤Þ¤»¤ó¡£
yyterminate()
¡¢yyrestart()
¡¢<<EOF>>
¡¢YY_DECL
¡¢#line
»Ø¼¨»Ò¤³¤ì¤é¤Ï¤¤¤º¤ì¤âLex¤Ç¤Ï¥µ¥Ý¡¼¥È¤µ¤ì¤Æ¤¤¤Þ¤»¤ó¤·¡¢
POSIX¤Ë¤ª¤¤¤ÆÌÀ¼¨Åª¤ËÄêµÁ¤µ¤ì¤Æ¤â¤¤¤Þ¤»¤ó¡£
#line
»Ø¼¨»Ò¤ÎÀâÌÀ¤Ë´Ø¤·¤Æ¤Ï¡¢
See Flex ¥³¥Þ¥ó¥É¥é¥¤¥ó¡¦¥ª¥×¥·¥ç¥ó¤ÎÍ×Ìó¡£
ÌõÃí¡§Flex 2.5¤Ç¤Ï¡¢ ‘-l’¥ª¥×¥·¥ç¥ó¤ò»ØÄꤷ¤ÆÀ¸À®¤µ¤ì¤¿¥¹¥¥ã¥Ê¤Ï¡¢ Lex¤Î¾ì¹ç¤ÈƱ¤¸¤è¤¦¤Ë¡¢ ÄêµÁ¤òŸ³«¤¹¤ë»þ¤Ë´Ý³ç¸Ì( )¤Ç°Ï¤ß¤Þ¤»¤ó¡£
ÌõÃí¡§Rational Fortran
ÌõÃí¡§Flex 2.5¤Ç¤Ï¡¢
Flexµ¯Æ°»þ¤Ë‘-l’¥ª¥×¥·¥ç¥ó¤ò»ØÄꤹ¤ë¤«¡¢
¥¹¥¥ã¥ÊÄêµÁ¥Õ¥¡¥¤¥ë¤ÎÃæ¤Ë‘%option yylineno’¤ò»ØÄꤹ¤ë¤³¤È¤Ë¤è¤Ã¤Æ¡¢
ÊÑ¿ôyylineno
¤òÍøÍѤ¹¤ë¤³¤È¤¬¤Ç¤¤Þ¤¹¡£
ÌõÃí¡§Flex 2.5¤Ç¤Ï¡¢
‘%option noyywrap’¤¬»ØÄꤵ¤ì¤Ê¤¤¸Â¤ê¡¢
yywrap()
¤Ï´Ø¿ô¤Ç¤¹¡£
ÌõÃí¡§Flex 2.5¤Ç¤Ï¡¢
‘%array’¤ò»ØÄꤹ¤ì¤Ð¡¢
unput()
¤Ïyytext
¤ÎÆâÍÆ¤òÇ˲õ¤·¤Þ¤»¤ó¡£
ÌõÃí¡§Flex 2.5¤Ç¤Ï¡¢
‘%pointer’¤È‘%array’¤Ë¤è¤ê¡¢
yytext
¤Î·¿¤òÁªÂò¤Ç¤¤ë¤è¤¦¤Ë¤Ê¤ê¤Þ¤·¤¿¡£
¥Ç¥Õ¥©¥ë¥È¤Ï‘%pointer’¤Ç¤¹¡£
ÌõÃí¡§Flex 2.5¤Ï¡¢ ‘%pointer’¤È‘%array’¤ò¥µ¥Ý¡¼¥È¤·¤Æ¤¤¤Þ¤¹¡£