Previous: Start States, Up: Flex Descriptions   [Contents][Index]


3.9 %option¡ÊFlex 2.5¤ÎÊä­¾ðÊó¡Ë

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 array

yytext¤ò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 pointer

yytext¤òchar¤ËÂФ¹¤ë¥Ý¥¤¥ó¥¿¤È¤·¤ÆÄêµÁ¤·¤Þ¤¹¡£ ¤³¤ì¤Ï¡¢ ‘%pointer’¤ÈƱ¤¸¤Ç¤¹¡£

%option reject

¥¹¥­¥ã¥ÊÄêµÁ¥Õ¥¡¥¤¥ë¤ÎÃæ¤ÇREJECT¤¬»È¤ï¤ì¤Æ¤¤¤ë¤³¤È¤ò¡¢ Flex¤ËÄÌÃΤ·¤Þ¤¹¡£ Flex¤ÏÄ̾ ÄêµÁ¥Õ¥¡¥¤¥ë¤ÎÃæ¤ÇREJECT¤¬»È¤ï¤ì¤Æ¤¤¤ë¤«Èݤ«¤ò¼«Ê¬¤ÇÄ´ºº¤·¤Þ¤¹¤¬¡¢ ¤³¤Î%option»Ø¼¨»Ò¤Î»ØÄê¤Ï¡¢ Flex¼«¿È¤Ë¤è¤ëȽÄê·ë²Ì¤ËÍ¥À褷¤Þ¤¹¡£

%option stack

¥¹¥¿¡¼¥È¾õÂÖ¥¹¥¿¥Ã¥¯ ¡ÊStart State Notes (Flex 2.5)¤ò»²¾È¡Ë ¤ò»ÈÍѤ¹¤ë¤¿¤á¤Ë¤Ï¡¢ ¤³¤Î%option»Ø¼¨»Ò¤ò»ØÄꤷ¤Ê¤±¤ì¤Ð¤Ê¤ê¤Þ¤»¤ó¡£

%option stdinit

yyin¤ò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

¤Î¤è¤¦¤ËÄêµÁ¤µ¤ì¤Þ¤¹¡£ ¤³¤Î·ë²Ì¡¢ ¥Õ¥¡¥¤¥ë¤Î½ªÃ¼¤ò¸¡½Ð¤·¤¿»þ¤Ë¡¢ ¥¹¥­¥ã¥Ê¤Ï¡¢ ¤Û¤«¤Ë¥¹¥­¥ã¥ó¤¹¤Ù¤­¥Õ¥¡¥¤¥ë¤Ï¸ºß¤·¤Ê¤¤¤ÈȽÃǤ¹¤ë¤è¤¦¤Ë¤Ê¤ê¤Þ¤¹¡£


Footnotes

(5)

Flex 2.5.4¤ËÉÕ°¤Î¥É¥­¥å¥á¥ó¥Èflex.texi¤Ë¤Ï¡¢ ´Ø¿ôinput()¤Ë¤Ä¤¤¤Æ¤âƱÍͤΤ³¤È¤¬µ­ºÜ¤µ¤ì¤Æ¤¤¤Þ¤¹¤¬¡¢ ¼ÂºÝ¤Ë‘%option noinput’¤ò»ØÄꤷ¤Æ¤ß¤ë¤È¡¢ À¸À®¤µ¤ì¤ë¥¹¥­¥ã¥Ê¤ÎÃæ¤Ë¡¢ ´Ø¿ôinput()¤¬ÁȤ߹þ¤Þ¤ì¤Þ¤¹¡£


Previous: Start States, Up: Flex Descriptions   [Contents][Index]