Previous: Command Line Switches, Up: Invoking Flex [Contents][Index]
Flex 2.5¤Ç¤Ï¡¢ Á°Àá¡ÊCommand Line Switches¡Ë¤ÇÀâÌÀ¤µ¤ì¤Æ¤¤¤Ê¤¤¡¢ °Ê²¼¤Î¥ª¥×¥·¥ç¥ó¤â¥µ¥Ý¡¼¥È¤µ¤ì¤Æ¤¤¤Þ¤¹¡£
Flex¤ËÂФ·¤Æ¥³¥Þ¥ó¥É¥é¥¤¥ó¡¦¥ª¥×¥·¥ç¥ó¤ÎÍ×Ìó¾ðÊó¤ò½ÐÎϤ¹¤ë¤è¤¦»Ø¼¨¤·¤Þ¤¹¡£
AT&T¤Ë¤è¤ê¼ÂÁõ¤µ¤ì¤¿lex¤È¤Î¸ß´¹À¤òºÇÂç¸Â¤ËÄ󶡤·¤Þ¤¹¡£ ¤³¤Î¥ª¥×¥·¥ç¥ó¤Ï¡¢ ÀǽÌ̤Ǥ«¤Ê¤ê¤Î°±Æ¶Á¤òµÚ¤Ü¤·¤Þ¤¹¡£ ¤Þ¤¿¡¢ ¤³¤Î¥ª¥×¥·¥ç¥ó¤ò¡¢ ‘-f’¡¢‘-F’¡¢‘-Cf’¡¢‘-CF’¡¢‘-+’¥ª¥×¥·¥ç¥ó¤ÈƱ»þ¤Ë»ØÄꤹ¤ë¤³¤È¤Ï¤Ç¤¤Þ¤»¤ó¡£ Flex¤ÈLex¤Î¡ÊÈó¡Ë¸ß´¹À¤ÎÌäÂê¤Ë¤Ä¤¤¤Æ¤Ï¡¢ Flex and Lex¤ò»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£
¤³¤Î¥ª¥×¥·¥ç¥ó¤¬»ØÄꤵ¤ì¤ë¤È¡¢ Flex¤Ï¡¢ ·Ù¹ð¥á¥Ã¥»¡¼¥¸¤ò½ÐÎϤ·¤Þ¤»¤ó¡£
Flex¤ËÂФ·¤Æ¥Ð¥Ã¥Á¡¦¥¹¥¥ã¥Ê¤òÀ¸À®¤¹¤ë¤è¤¦»Ø¼¨¤·¤Þ¤¹¡£ ¤³¤ì¤Ï¡¢ ÂÐÏ÷¿¥¹¥¥ã¥Ê¤òÀ¸À®¤¹¤ë¤è¤¦»Ø¼¨¤¹¤ë‘-I’¥ª¥×¥·¥ç¥ó¤ÎÈÝÄê¤Ç¤¹¡£
Flex¤ËÂФ·¤Æ¥Ð¡¼¥¸¥ç¥óÈÖ¹æ¤ò½ÐÎϤ¹¤ë¤è¤¦»Ø¼¨¤·¤Þ¤¹¡£
Flex¤ËÂФ·¤Æ7¥Ó¥Ã¥È¡¦¥¹¥¥ã¥Ê¤òÀ¸À®¤¹¤ë¤è¤¦»Ø¼¨¤·¤Þ¤¹¡£ ¤³¤ì¤Ï¡¢ ‘-8’¥ª¥×¥·¥ç¥ó¤ÎÈÝÄê¤Ç¤¹¡£ ÆâÉôŪ¤ËÀ¸À®¤µ¤ì¤ë¥Æ¡¼¥Ö¥ë¤Î¥µ¥¤¥º¤Ï¡¢ ‘-8’¥ª¥×¥·¥ç¥ó¤¬»ØÄꤵ¤ì¤¿¾ì¹ç¤ÈÈæ³Ó¤·¤ÆÈ¾Ê¬¤Ë¤Ê¤ê¤Þ¤¹¤¬¡¢ À¸À®¤µ¤ì¤ë¥¹¥¥ã¥Ê¤Ï¡¢ 8¥Ó¥Ã¥Èʸ»ú¤ò´Þ¤àÆþÎϤò½èÍý¤¹¤ë¤³¤È¤¬¤Ç¤¤Ê¤¯¤Ê¤ê¤Þ¤¹¡£ ‘-Cf’¡¢‘-CF’¤¬»ØÄꤵ¤ì¤Æ¤¤¤Ê¤¤¾ì¹ç¤Ï¡¢ ÌÀ¼¨Åª¤Ë‘-7’¤ò»ØÄꤷ¤Ê¤¤¸Â¤ê¡¢ 8¥Ó¥Ã¥È¡¦¥¹¥¥ã¥Ê¤¬À¸À®¤µ¤ì¤Þ¤¹¡£
Flex¤ËÂФ·¤ÆC++¥¹¥¥ã¥Ê¡¦¥¯¥é¥¹¤òÀ¸À®¤¹¤ë¤è¤¦»Ø¼¨¤·¤Þ¤¹¡£ C++¥¹¥¥ã¥Ê¤Ë¤Ä¤¤¤Æ¤Ï¡¢ Flex and C++ (Flex 2.5)¤ò»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£
Flex¤ËÂФ·¤Æ¥³¥Þ¥ó¥É¥é¥¤¥ó¡¦¥ª¥×¥·¥ç¥ó¤ÎÍ×Ìó¾ðÊó¤ò½ÐÎϤ¹¤ë¤è¤¦»Ø¼¨¤·¤Þ¤¹¡£ ¡Ê‘-h’¥ª¥×¥·¥ç¥ó¤ÈƱ¤¸¤Ç¤¹¡Ë¡£
¤³¤Î¥ª¥×¥·¥ç¥ó¤Ï¡¢
¥¹¥¥ã¥ó½èÍýÍѤΥơ¼¥Ö¥ë¤òlong int
¤ÎÇÛÎó¤È¤·¤ÆÄêµÁ¤¹¤ë¤è¤¦Flex¤ËÄÌÃΤ·¤Þ¤¹
¡Ê¥Ç¥Õ¥©¥ë¥È¤Ç¤Ïshort int
·¿¤ÎÇÛÎó¤È¤Ê¤ê¤Þ¤¹¡Ë¡£
RISC¥Þ¥·¥ó¤Ë¤è¤Ã¤Æ¤Ï¡¢
long int
¤ÎÊý¤¬¹â®¤Ë½èÍý¤µ¤ì¤ë¤¿¤á¡¢
¥¹¥¥ã¥Ê¤ÎÀǽ¸þ¾å¤¬´üÂԤǤ¤Þ¤¹¤¬¡¢
¤½¤ÎÈ¿ÌÌ¡¢
¥Æ¡¼¥Ö¥ë¤Î¥µ¥¤¥º¤ÏÂ礤¯¤Ê¤ê¤Þ¤¹¡£
¤³¤Î¥ª¥×¥·¥ç¥ó¤ò»ØÄꤷ¤ÆÀ¸À®¤µ¤ì¤¿¥¹¥¥ã¥Ê¤Ï¡¢
ÆþÎϤËread()
¥·¥¹¥Æ¥à¡¦¥³¡¼¥ë¤ò»È¤¤¤Þ¤¹¡£
¥Ç¥Õ¥©¥ë¥È¤Ç¤Ï¡¢
ÂÐÏ÷¿¥¹¥¥ã¥Ê¤Î¾ì¹ç¤Ïgetc()
¤¬¡¢
¥Ð¥Ã¥Á¡ÊÈóÂÐÏ÷¿¡Ë¡¦¥¹¥¥ã¥Ê¤Î¾ì¹ç¤Ïfread()
¤¬»È¤ï¤ì¤Þ¤¹¡£
¤³¤Î¥ª¥×¥·¥ç¥ó¤¬»ØÄꤵ¤ì¤ë¤È¡¢ Flex¤ÏÀ¸À®¤µ¤ì¤¿¥¹¥¥ã¥Ê¤òfile¤Ë¤è¤ê»ØÄꤵ¤ì¤ë¥Õ¥¡¥¤¥ë¤Ë½ÐÎϤ·¤Þ¤¹¡£ ¥Ç¥Õ¥©¥ë¥È¤Ç¤Ï¡¢ ¥¹¥¥ã¥Ê¤Ï¥Õ¥¡¥¤¥ëlex.yy.c¤Ë½ÐÎϤµ¤ì¤Þ¤¹¡£
Flex¤Ë¤è¤êÀ¸À®¤µ¤ì¤ë¥¹¥¥ã¥Ê¤Î¥½¡¼¥¹¡¦¥Õ¥¡¥¤¥ë¤ÎÃæ¤Ç¤Ï¡¢ Âç°èÊÑ¿ô¤äÂç°è´Ø¿ô¤Î̾Á°¤ÎÀèÆ¬¤ËÀÜÆ¬¼‘yy’¤¬ÉÕ¤±¤é¤ì¤Þ¤¹¡£ ¤³¤Î¥ª¥×¥·¥ç¥ó¤¬»ØÄꤵ¤ì¤ë¤È¡¢ ‘yy’¤ÎÂå¤ï¤ê¤Ë¡¢ prefix¤Ë¤è¤ê»ØÄꤵ¤ì¤ëʸ»úÎó¤¬ÀÜÆ¬¼¤È¤·¤Æ»ÈÍѤµ¤ì¤Þ¤¹¡£ ¤Þ¤¿¡¢ ‘-o’¥ª¥×¥·¥ç¥ó¤¬»ØÄꤵ¤ì¤Ê¤¤¾ì¹ç¤Î¥¹¥¥ã¥Ê¡¦¥Õ¥¡¥¤¥ë̾lex.yy.c¤â¡¢ lex.prefix.c¤È¤Ê¤ê¤Þ¤¹¡£
°Ê²¼¤Ë¡¢ ¤³¤Î¥ª¥×¥·¥ç¥ó¤Ë¤è¤ê±Æ¶Á¤ò¼õ¤±¤ë̾Á°¤Î°ìÍ÷¤ò¼¨¤·¤Þ¤¹¡£
yy_create_buffer yy_delete_buffer yy_scan_buffer yy_scan_string yy_scan_bytes yy_flex_debug yy_init_buffer yy_flush_buffer yy_load_buffer_state yy_switch_to_buffer yyin yyleng yylex yylineno yyout yyrestart yytext yywrap
‘-+’¥ª¥×¥·¥ç¥ó¤¬»ØÄꤵ¤ì¤Æ¤¤¤ë¾ì¹ç¤Ï¡¢
±Æ¶Á¤ò¼õ¤±¤ë¤Î¤Ïyywrap
¤ÈyyFlexLexer
¤Î£²¤Ä¤À¤±¤Ç¤¹¡£
¤³¤Î¥ª¥×¥·¥ç¥ó¤Ë¤è¤ê¡¢
yywrap()
¤Î̾Á°¤¬Êѹ¹¤µ¤ì¤Æ¤·¤Þ¤¦ÅÀ¤ËÃí°Õ¤·¤Æ¤¯¤À¤µ¤¤¡£
¥×¥í¥°¥é¥à¤ò¥ê¥ó¥¯¤¹¤ë¤¿¤á¤Ë¤Ï¡¢
‘prefixwrap’¤È¤¤¤¦Ì¾Á°¤Î´Ø¿ô¤òºîÀ®¤¹¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£
¤³¤Î´Ø¿ô¤òºîÀ®¤·¤¿¤¯¤Ê¤¤¾ì¹ç¤Ë¤Ï¡¢
¥¹¥¥ã¥ÊÄêµÁ¥Õ¥¡¥¤¥ë¤ÎÃæ¤Ç¡¢
‘%option noyywrap’¤ò»ØÄꤷ¤Æ¡¢
¥ê¥ó¥¯»þ¤Ë‘-lfl’¥ª¥×¥·¥ç¥ó¤ò»ØÄꤷ¤Þ¤¹¡£
%option
»Ø¼¨»Ò¤Ë¤Ä¤¤¤Æ¤Ï¡¢
%option (Flex 2.5)¤ò»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£
Flex¤ËÂФ·¤Æ¥³¥Þ¥ó¥É¥é¥¤¥ó¡¦¥ª¥×¥·¥ç¥ó¤ÎÍ×Ìó¾ðÊó¤ò½ÐÎϤ¹¤ë¤è¤¦»Ø¼¨¤·¤Þ¤¹¡£ ¡Ê‘-h’¥ª¥×¥·¥ç¥ó¤ÈƱ¤¸¤Ç¤¹¡Ë¡£
Flex¤ËÂФ·¤Æ¥Ð¡¼¥¸¥ç¥óÈÖ¹æ¤ò½ÐÎϤ¹¤ë¤è¤¦»Ø¼¨¤·¤Þ¤¹¡£ ¡Ê‘-V’¥ª¥×¥·¥ç¥ó¤ÈƱ¤¸¤Ç¤¹¡Ë¡£