Previous: Start States, Up: Flex Descriptions [Contents][Index]
Flex 2.5¤Ç¤Ï¡¢
¥¹¥¥ã¥ÊÄêµÁ¥Õ¥¡¥¤¥ë¤ÎÃæ¤ÇÍÍ¡¹¤Ê¥ª¥×¥·¥ç¥ó¤ò»ØÄꤹ¤ë¤³¤È¤¬¤Ç¤¤Þ¤¹¡£
¥ª¥×¥·¥ç¥ó¤ò»ØÄꤹ¤ë¤Ë¤Ï¡¢
¥¹¥¥ã¥ÊÄêµÁ¥Õ¥¡¥¤¥ë¤ÎÀèÆ¬
¡ÊºÇ½é¤Î‘%%’¤è¤ê¤âÁ°¤ÎÉôʬ¡Ë
¤Ë¡¢
%option»Ø¼¨»Ò¤òµ½Ò¤·¤Þ¤¹¡£
¤Û¤È¤ó¤É¤Î%option»Ø¼¨»Ò¤Ï¡¢
°Ê²¼¤Î·Á¼°¤Ç»ØÄꤵ¤ì¤Þ¤¹¡£
%option option_name
¥ª¥×¥·¥ç¥óoption_name¤Î»ØÄê¤ò̵¸ú¤Ë¤¹¤ë¤¿¤á¤Ë¤Ï¡¢ ¥ª¥×¥·¥ç¥ó̾¤ÎÁ°¤Ë‘no’¤òÉÕ¤±¤Þ¤¹¡£
%option nooption_name
°Ê²¼¤Ë¡¢
¥³¥Þ¥ó¥É¥é¥¤¥ó¡¦¥ª¥×¥·¥ç¥ó¤ÈƱÅù¤Î¸ú²Ì¤ò»ý¤Ä%option»Ø¼¨»Ò¤ò¼¨¤·¤Þ¤¹¡£
³Æ¥³¥Þ¥ó¥É¥é¥¤¥ó¡¦¥ª¥×¥·¥ç¥ó¤Î°ÕÌ£¤Ë¤Ä¤¤¤Æ¤Ï¡¢
Command Line Switches¤ÈCommand Line Switches (Flex 2.5)¤ò»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£
%option 7bit-7¥ª¥×¥·¥ç¥ó
%option 8bit-8¥ª¥×¥·¥ç¥ó
%option align-Ca¥ª¥×¥·¥ç¥ó
%option backup-b¥ª¥×¥·¥ç¥ó
%option batch-B¥ª¥×¥·¥ç¥ó
%option c++-+¥ª¥×¥·¥ç¥ó
%option caseful-i¥ª¥×¥·¥ç¥ó¤ÎÈÝÄê
%option case-sensitive-i¥ª¥×¥·¥ç¥ó¤ÎÈÝÄê
%option case-insensitive-i¥ª¥×¥·¥ç¥ó
%option caseless-i¥ª¥×¥·¥ç¥ó
%option debug-d¥ª¥×¥·¥ç¥ó
%option default-s¥ª¥×¥·¥ç¥ó¤ÎÈÝÄê
%option ecs-Ce¥ª¥×¥·¥ç¥ó
%option fast-F¥ª¥×¥·¥ç¥ó
%option full-f¥ª¥×¥·¥ç¥ó
%option interactive-I¥ª¥×¥·¥ç¥ó
%option lex-compat-l¥ª¥×¥·¥ç¥ó
%option meta-ecs-Cm¥ª¥×¥·¥ç¥ó
%option output="file"-ofile¥ª¥×¥·¥ç¥ó
%option perf-report-p¥ª¥×¥·¥ç¥ó
%option prefix="prefix"-Pprefix¥ª¥×¥·¥ç¥ó
%option read-Cr¥ª¥×¥·¥ç¥ó
%option stdout-t¥ª¥×¥·¥ç¥ó
%option verbose-v¥ª¥×¥·¥ç¥ó
%option warn-w¥ª¥×¥·¥ç¥ó¤ÎÈÝÄê
¼¡¤Ë¡¢
¥³¥Þ¥ó¥É¥é¥¤¥ó¡¦¥ª¥×¥·¥ç¥ó¤Ç¤ÏÂåÂØ¤Ç¤¤Ê¤¤%option»Ø¼¨»Ò¤ò¼¨¤·¤Þ¤¹¡£
%option arrayyytext¤òchar¤ÎÇÛÎó¤È¤·¤ÆÄêµÁ¤·¤Þ¤¹¡£
¤³¤ì¤Ï¡¢
‘%array’¤ÈƱ¤¸¤Ç¤¹¡£
%option always-interactiveÆþÎϤò¾ï¤ËÂÐÏÃŪ¤Ë°·¤¦¥¹¥¥ã¥Ê¤òÀ¸À®¤¹¤ë¤è¤¦»Ø¼¨¤·¤Þ¤¹¡£
¤³¤ì¤È‘%option never-interactive’¤Î¤É¤Á¤é¤â»ØÄꤵ¤ì¤Ê¤¤¾ì¹ç¡¢
À¸À®¤µ¤ì¤¿¥¹¥¥ã¥Ê¤Ï¡¢
¥Õ¥¡¥¤¥ë¤ò¥ª¡¼¥×¥ó¤¹¤ë¤¿¤Ó¤Ëisatty()¤ò¸Æ¤Ó½Ð¤·¤Æ¡¢
ÆþÎϤòÂÐÏÃŪ¤Ë¡Ê£±Ê¸»ú¤º¤Ä¡ËÆÉ¤ß¹þ¤à¤Ù¤¤«Èݤ«¤ò·èÄꤷ¤Þ¤¹¡£
%option mainÀ¸À®¤µ¤ì¤ë¥¹¥¥ã¥Ê¤Ë¡¢
°Ê²¼¤Î¤è¤¦¤Êmain()´Ø¿ô¤òÁȤ߹þ¤à¤è¤¦»Ø¼¨¤·¤Þ¤¹¡£
int main()
{
yylex();
return 0;
}
¤³¤ì¤Ï¡¢ °ÅÌۤΤ¦¤Á¤Ë‘%option noyywrap’¤ò»ØÄꤷ¤Þ¤¹¡£
%option never-interactiveÆþÎϤò¾ï¤ËÂÐÏÃŪ¤Ë°·¤ï¤Ê¤¤¥¹¥¥ã¥Ê¤òÀ¸À®¤¹¤ë¤è¤¦»Ø¼¨¤·¤Þ¤¹¡£
¤³¤ì¤È‘%option always-interactive’¤Î¤É¤Á¤é¤â»ØÄꤵ¤ì¤Ê¤¤¾ì¹ç¡¢
À¸À®¤µ¤ì¤¿¥¹¥¥ã¥Ê¤Ï¡¢
¥Õ¥¡¥¤¥ë¤ò¥ª¡¼¥×¥ó¤¹¤ë¤¿¤Ó¤Ëisatty()¤ò¸Æ¤Ó½Ð¤·¤Æ¡¢
ÆþÎϤòÂÐÏÃŪ¤Ë¡Ê£±Ê¸»ú¤º¤Ä¡ËÆÉ¤ß¹þ¤à¤Ù¤¤«Èݤ«¤ò·èÄꤷ¤Þ¤¹¡£
%option pointeryytext¤òchar¤ËÂФ¹¤ë¥Ý¥¤¥ó¥¿¤È¤·¤ÆÄêµÁ¤·¤Þ¤¹¡£
¤³¤ì¤Ï¡¢
‘%pointer’¤ÈƱ¤¸¤Ç¤¹¡£
%option reject¥¹¥¥ã¥ÊÄêµÁ¥Õ¥¡¥¤¥ë¤ÎÃæ¤ÇREJECT¤¬»È¤ï¤ì¤Æ¤¤¤ë¤³¤È¤ò¡¢
Flex¤ËÄÌÃΤ·¤Þ¤¹¡£
Flex¤ÏÄ̾
ÄêµÁ¥Õ¥¡¥¤¥ë¤ÎÃæ¤ÇREJECT¤¬»È¤ï¤ì¤Æ¤¤¤ë¤«Èݤ«¤ò¼«Ê¬¤ÇÄ´ºº¤·¤Þ¤¹¤¬¡¢
¤³¤Î%option»Ø¼¨»Ò¤Î»ØÄê¤Ï¡¢
Flex¼«¿È¤Ë¤è¤ëȽÄê·ë²Ì¤ËÍ¥À褷¤Þ¤¹¡£
%option stack¥¹¥¿¡¼¥È¾õÂÖ¥¹¥¿¥Ã¥¯
¡ÊStart State Notes (Flex 2.5)¤ò»²¾È¡Ë
¤ò»ÈÍѤ¹¤ë¤¿¤á¤Ë¤Ï¡¢
¤³¤Î%option»Ø¼¨»Ò¤ò»ØÄꤷ¤Ê¤±¤ì¤Ð¤Ê¤ê¤Þ¤»¤ó¡£
%option stdinityyin¤òstdin¤Ç¡¢
yyout¤òstdout¤Ç¡¢
¤½¤ì¤¾¤ì½é´ü²½¤·¤Þ¤¹¡£
¤³¤Î%option»Ø¼¨»Ò¤¬»ØÄꤵ¤ì¤Ê¤¤¾ì¹ç¡¢
¤¢¤ë¤¤¤Ï¡¢
‘%option nostdinit’¤¬»ØÄꤵ¤ì¤¿¾ì¹ç¡¢
yyin¤Èyyout¤Ï¡¢
(FILE *)0¡ÊNULL¥Ý¥¤¥ó¥¿¡Ë¤Ç½é´ü²½¤µ¤ì¤Þ¤¹¡£
%option unput‘%option nounput’¤¬»ØÄꤵ¤ì¤ë¤È¡¢
À¸À®¤µ¤ì¤ë¥¹¥¥ã¥Ê¤ÎÃæ¤Ë¡¢
´Ø¿ôunput()¤¬ÁȤ߹þ¤Þ¤ì¤Þ¤»¤ó¡£5
%option yy_pop_state‘%option noyy_pop_state’¤¬»ØÄꤵ¤ì¤ë¤È¡¢
À¸À®¤µ¤ì¤ë¥¹¥¥ã¥Ê¤ÎÃæ¤Ë¡¢
´Ø¿ôyy_pop_state()¤¬ÁȤ߹þ¤Þ¤ì¤Þ¤»¤ó¡£
¤¿¤À¤·¡¢
‘%option stack’¤¬»ØÄꤵ¤ì¤Æ¤¤¤Ê¤¤¾ì¹ç¤Ï¡¢
‘%option noyy_pop_state’¤Î»ØÄê¤ÎÍ̵¤Ë¤«¤«¤ï¤é¤º¡¢
´Ø¿ôyy_pop_state()¤ÏÁȤ߹þ¤Þ¤ì¤Þ¤»¤ó¡£
%option yy_push_state‘%option noyy_push_state’¤¬»ØÄꤵ¤ì¤ë¤È¡¢
À¸À®¤µ¤ì¤ë¥¹¥¥ã¥Ê¤ÎÃæ¤Ë¡¢
´Ø¿ôyy_push_state()¤¬ÁȤ߹þ¤Þ¤ì¤Þ¤»¤ó¡£
¤¿¤À¤·¡¢
‘%option stack’¤¬»ØÄꤵ¤ì¤Æ¤¤¤Ê¤¤¾ì¹ç¤Ï¡¢
‘%option noyy_push_state’¤Î»ØÄê¤ÎÍ̵¤Ë¤«¤«¤ï¤é¤º¡¢
´Ø¿ôyy_push_state()¤ÏÁȤ߹þ¤Þ¤ì¤Þ¤»¤ó¡£
%option yy_scan_buffer‘%option noyy_scan_buffer’¤¬»ØÄꤵ¤ì¤ë¤È¡¢
À¸À®¤µ¤ì¤ë¥¹¥¥ã¥Ê¤ÎÃæ¤Ë¡¢
´Ø¿ôyy_scan_buffer()¤¬ÁȤ߹þ¤Þ¤ì¤Þ¤»¤ó¡£
%option yy_scan_bytes‘%option noyy_scan_bytes’¤¬»ØÄꤵ¤ì¤ë¤È¡¢
À¸À®¤µ¤ì¤ë¥¹¥¥ã¥Ê¤ÎÃæ¤Ë¡¢
´Ø¿ôyy_scan_bytes()¤¬ÁȤ߹þ¤Þ¤ì¤Þ¤»¤ó¡£
%option yy_scan_string‘%option noyy_scan_string’¤¬»ØÄꤵ¤ì¤ë¤È¡¢
À¸À®¤µ¤ì¤ë¥¹¥¥ã¥Ê¤ÎÃæ¤Ë¡¢
´Ø¿ôyy_scan_string()¤¬ÁȤ߹þ¤Þ¤ì¤Þ¤»¤ó¡£
%option yy_top_state‘%option noyy_top_state’¤¬»ØÄꤵ¤ì¤ë¤È¡¢
À¸À®¤µ¤ì¤ë¥¹¥¥ã¥Ê¤ÎÃæ¤Ë¡¢
´Ø¿ôyy_top_state()¤¬ÁȤ߹þ¤Þ¤ì¤Þ¤»¤ó¡£
¤¿¤À¤·¡¢
‘%option stack’¤¬»ØÄꤵ¤ì¤Æ¤¤¤Ê¤¤¾ì¹ç¤Ï¡¢
‘%option noyy_top_state’¤Î»ØÄê¤ÎÍ̵¤Ë¤«¤«¤ï¤é¤º¡¢
´Ø¿ôyy_top_state()¤ÏÁȤ߹þ¤Þ¤ì¤Þ¤»¤ó¡£
%option yyclass="classname"¤³¤ì¤Ï¡¢
‘-+’¥ª¥×¥·¥ç¥ó¤¬»ØÄꤵ¤ì¤Æ¤¤¤ë¾ì¹ç
¡Ê¤¹¤Ê¤ï¤Á¡¢
C++¥¹¥¥ã¥Ê¤òÀ¸À®¤¹¤ë¾ì¹ç¡Ë
¤Î¤ß͸ú¤Ç¤¹¡£
¤³¤ì¤Ë¤è¤ê¡¢
classname¤Ë¤è¤ê»ØÄꤵ¤ì¤ë̾Á°¤Î¥¯¥é¥¹¤¬¡¢
yyFlexLexer¤Î¥µ¥Ö¥¯¥é¥¹¤È¤·¤ÆÄêµÁ¤µ¤ì¤Þ¤¹¡£
¼ÂºÝ¤Ë¥¹¥¥ã¥ó½èÍý¤ò¼Â¹Ô¤¹¤ë¥³¡¼¥É¤Ï¡¢
¥¯¥é¥¹classname¤Î¥á¥ó¥Ð´Ø¿ôyylex()¡Êclassname::yylex()¡Ë¤Ë¼ÂÁõ¤µ¤ì¤Þ¤¹¡£
¾ÜºÙ¤Ë¤Ä¤¤¤Æ¤Ï¡¢
Flex and C++ (Flex 2.5)¤ò»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£
%option yylinenoÆþÎϤιԿô¤ò¥«¥¦¥ó¥È¤·¤ÆÂç°èÊÑ¿ôyylineno¤ËÊÝ»ý¤¹¤ë¥¹¥¥ã¥Ê¤òÀ¸À®¤¹¤ë¤è¤¦»Ø¼¨¤·¤Þ¤¹¡£
%option yymore¥¹¥¥ã¥ÊÄêµÁ¥Õ¥¡¥¤¥ë¤ÎÃæ¤Çyymore()¤¬»È¤ï¤ì¤Æ¤¤¤ë¤³¤È¤ò¡¢
Flex¤ËÄÌÃΤ·¤Þ¤¹¡£
Flex¤ÏÄ̾
ÄêµÁ¥Õ¥¡¥¤¥ë¤ÎÃæ¤Çyymore()¤¬»È¤ï¤ì¤Æ¤¤¤ë¤«Èݤ«¤ò¼«Ê¬¤ÇÄ´ºº¤·¤Þ¤¹¤¬¡¢
¤³¤Î%option»Ø¼¨»Ò¤Î»ØÄê¤Ï¡¢
Flex¼«¿È¤Ë¤è¤ëȽÄê·ë²Ì¤ËÍ¥À褷¤Þ¤¹¡£
%option yywrap‘%option noyywrap’¤¬»ØÄꤵ¤ì¤ë¤È¡¢
yywrap()¤Ï¥Þ¥¯¥í¤È¤·¤Æ¡¢
#define yywrap() 1
¤Î¤è¤¦¤ËÄêµÁ¤µ¤ì¤Þ¤¹¡£ ¤³¤Î·ë²Ì¡¢ ¥Õ¥¡¥¤¥ë¤Î½ªÃ¼¤ò¸¡½Ð¤·¤¿»þ¤Ë¡¢ ¥¹¥¥ã¥Ê¤Ï¡¢ ¤Û¤«¤Ë¥¹¥¥ã¥ó¤¹¤Ù¤¥Õ¥¡¥¤¥ë¤Ï¸ºß¤·¤Ê¤¤¤ÈȽÃǤ¹¤ë¤è¤¦¤Ë¤Ê¤ê¤Þ¤¹¡£
Flex 2.5.4¤ËÉÕ°¤Î¥É¥¥å¥á¥ó¥Èflex.texi¤Ë¤Ï¡¢
´Ø¿ôinput()¤Ë¤Ä¤¤¤Æ¤âƱÍͤΤ³¤È¤¬µºÜ¤µ¤ì¤Æ¤¤¤Þ¤¹¤¬¡¢
¼ÂºÝ¤Ë‘%option noinput’¤ò»ØÄꤷ¤Æ¤ß¤ë¤È¡¢
À¸À®¤µ¤ì¤ë¥¹¥¥ã¥Ê¤ÎÃæ¤Ë¡¢
´Ø¿ôinput()¤¬ÁȤ߹þ¤Þ¤ì¤Þ¤¹¡£
Previous: Start States, Up: Flex Descriptions [Contents][Index]