Next: Switches Summary (Flex 2.5), Previous: Summary, Up: Summary [Contents][Index]
Flex¤Ë¤Ï¡¢ °Ê²¼¤Î¥³¥Þ¥ó¥É¥é¥¤¥ó¡¦¥ª¥×¥·¥ç¥ó¤¬¤¢¤ê¤Þ¤¹¡£
¤³¤Î¥ª¥×¥·¥ç¥ó¤Ï¡¢ ¥Ð¥Ã¥¯¥È¥é¥Ã¥¥ó¥°¤òɬÍפȤ¹¤ë¾õÂÖ¤ò¤â¤¿¤é¤¹¥ë¡¼¥ë¤Ë´Ø¤¹¤ë¾ðÊó¤ò´Þ¤à¡¢ lex.backtrack¤È¤¤¤¦¥Õ¥¡¥¤¥ë¤òÀ¸À®¤·¤Þ¤¹¡£ ¤Ê¤¼¤³¤Î¾ðÊ󤬽ÅÍפʤΤ«¡¢ ¤Þ¤¿¡¢ ¤³¤Î¾ðÊó¤ò¤É¤Î¤è¤¦¤Ë»È¤¦¤«¤È¤¤¤¦ÅÀ¤Ë´Ø¤¹¤ë¾ÜºÙ¤Ë¤Ä¤¤¤Æ¤Ï¡¢ Optimizing for Speed¤ÈRemoving Backtracking¤ò»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£
¤³¤Î¥ª¥×¥·¥ç¥ó¤Ï¡¢ POSIX¤È¤Î¸ß´¹À¤Î¤¿¤á¤À¤±¤ËÄ󶡤µ¤ì¤Æ¤ª¤ê¡¢ ¼ÂºÝ¤Ë¤Ï²¿¤â¤·¤Þ¤»¤ó¡£ °ÊÁ°¤Ï¡¢ ¥Æ¡¼¥Ö¥ë°µ½Ì¤òÀ©¸æ¤¹¤ë¤¿¤á¤Ë»È¤ï¤ì¤Æ¤¤¤Þ¤·¤¿¤¬¡¢ ¤½¤Îµ¡Ç½¤Ï‘-C’¥ª¥×¥·¥ç¥ó¤Ë°Ü¤µ¤ì¤Þ¤·¤¿¡£ ¤³¤Î¥Õ¥é¥°¤ò¸«¤Ä¤±¤ë¤È¡¢ Flex¤Ï¥æ¡¼¥¶¤¬¥Æ¡¼¥Ö¥ë°µ½Ì¤ò´õ˾¤·¤Æ¤¤¤ë¤â¤Î¤ÈÁÛÄꤷ¡¢ ·Ù¹ð¥á¥Ã¥»¡¼¥¸¤ò½ÐÎϤ·¤Þ¤¹¡£ ¾Íè¡¢ ¤³¤Î·Ù¹ð¥á¥Ã¥»¡¼¥¸¤Ï½ÐÎϤµ¤ì¤Ê¤¤¤è¤¦¤Ë¤Ê¤ë¤«¤â¤·¤ì¤Þ¤»¤ó¡£22
¥Ç¥Ð¥Ã¥°¤Ë»È¤ï¤ì¤Þ¤¹¡£
¼Â¹ÔÃæ¤Ë¼«¿È¤Î¾õÂÖ¾ðÊó¤òyyout
¤Ë½ñ¤¹þ¤à¥¹¥¥ã¥Ê¤òÀ¸À®¤·¤Þ¤¹¡£
¤¢¤ë¥ë¡¼¥ë¤¬¥Þ¥Ã¥Á¤¹¤ë¤¿¤Ó¤Ë¡¢
¥Ð¥Ã¥¯¥È¥é¥Ã¥¥ó¥°¤Ë´Ø¤¹¤ë¾ðÊ󡢸¡½Ð¤µ¤ì¤¿¥Ð¥Ã¥Õ¥¡¤Î½ªÃ¼¡¢NUL
¤Ë´Ø¤¹¤ë¾ðÊó¤Ë²Ã¤¨¤Æ¡¢
°Ê²¼¤Î¤è¤¦¤Ê¾ðÊ󤬽ñ¤¹þ¤Þ¤ì¤Þ¤¹¡£
--accepting rule at line ¹ÔÈÖ¹æ ("¥Þ¥Ã¥Á¤·¤¿¥Æ¥¥¹¥È")
¤³¤ÎÃæ¤Î¹ÔÈÖ¹æ¤Ï ¡Ê‘-L’¥ª¥×¥·¥ç¥ó¤¬»È¤ï¤ì¤Æ¤¤¤Ê¤¤¾ì¹ç¤Ë¤Ï¡Ë¡¢ À¸À®¤µ¤ì¤¿¥Õ¥¡¥¤¥ëlex.yy.c¤Ç¤Ï¤Ê¤¯¡¢ ¥¹¥¥ã¥Ê¤òÀ¸À®¤¹¤ë¤Î¤Ë»È¤ï¤ì¤¿µ½Ò¥Õ¥¡¥¤¥ë¤Î¹ÔÈÖ¹æ¤ò»Ø¤·¤Þ¤¹¡£
¥Õ¥ë¡¦¥¹¥¥ã¥Ê¡Êfull scanner¡Ë¤òÀ¸À®¤·¤Þ¤¹¡£ °µ½Ì¤Ï°ìÀÚ¹Ô¤ï¤ì¤Þ¤»¤ó¡£ ¤³¤ì¤Ï¡¢ ‘-Cf’¤ÈƱÅù¤Ç¤¹ ¡Ê¾ÜºÙ¤Ë¤Ä¤¤¤Æ¤Ï¡¢ See Table Compression and Scanner Speed¡Ë¡£
Âçʸ»ú¡¦¾®Ê¸»ú¤Î¶èÊ̤ò̵»ë¤¹¤ë¥¹¥¥ã¥Ê¤òºîÀ®¤¹¤ë¤è¤¦¡¢
Flex¤ËÄÌÃΤ·¤Þ¤¹¡£
¥ë¡¼¥ë¤Î¥Þ¥Ã¥Á½èÍý¤Ë¤ª¤¤¤ÆÂçʸ»ú¡¦¾®Ê¸»ú¤Î¶èÊ̤Ï̵»ë¤µ¤ì¤Þ¤¹¤¬¡¢
¸Ä¡¹¤Îʸ»ú¤ÏÂçʸ»ú¤Þ¤¿¤Ï¾®Ê¸»ú¤ËÊÑ´¹¤µ¤ì¤Ê¤¤¤Î¤Ç¡¢
yytext
¤Ë¤ÏÂçʸ»ú¡¦¾®Ê¸»ú¤¬º®ºß¤·¤¿Ê¸»ú¤ÎʤӤ¬Æþ¤ë¤³¤È¤Ë¤Ê¤ê¤Þ¤¹¡£
¤³¤Î¥ª¥×¥·¥ç¥ó¤Ï¡¢ Flex¤ËÂФ·¤Æ¤Ï¤Þ¤Ã¤¿¤¯°ÕÌ£¤ò»ý¤¿¤º¡¢ ñ¤ËPOSIX¤È¤Î¸ß´¹À¤Î¤¿¤á¤À¤±¤ËÄ󶡤µ¤ì¤Æ¤¤¤Þ¤¹¡£
Àǽ¤Ë´Ø¤¹¤ë¾ðÊó¤òstderr
¤Ë½ñ¤¹þ¤à¤è¤¦¡¢
Flex¤ËÄÌÃΤ·¤Þ¤¹¡£
Êó¹ð¤µ¤ì¤ë¾ðÊó¤Ï¡¢
Àǽ¤òÄã²¼¤µ¤»¤ë¤è¤¦¤Ê¥¹¥¥ã¥Êµ½Ò¾ðÊó¤Îµ¡Ç½¤Ë´Ø¤¹¤ë¥³¥á¥ó¥È¤Ë¤è¤Ã¤Æ¹½À®¤µ¤ì¤Þ¤¹¡£
¥Þ¥Ã¥Á¤¹¤ë¤â¤Î¤¬¤Ê¤«¤Ã¤¿¾ì¹ç¤ÎFlex¥¹¥¥ã¥Ê¤Î¥Ç¥Õ¥©¥ë¥È¤Î¥¢¥¯¥·¥ç¥ó¤Ï¡¢
¥Þ¥Ã¥Á¤·¤Ê¤«¤Ã¤¿ÆþÎϾðÊó¤òstdout
¤Ë½ñ¤¹þ¤à¤³¤È¤Ç¤¹¡£
‘-s’¥ª¥×¥·¥ç¥ó¤Ï¤³¤Î¥¢¥¯¥·¥ç¥ó¤òÍÞÀ©¤·¡¢
¤½¤ÎÂå¤ï¤ê¤Ë¡¢
ÆþÎϤ¬¥Þ¥Ã¥Á¤·¤Ê¤¤¤È¤¹¤°¤Ë¥¹¥¥ã¥Ê¤ò°Û¾ï½ªÎ»¤µ¤»¤Þ¤¹¡£
¤³¤Î¥ª¥×¥·¥ç¥ó¤¬»ØÄꤵ¤ì¤ë¤È¡¢
Flex¤ÏÀ¸À®¤µ¤ì¤¿¥¹¥¥ã¥Ê¤ò¥Õ¥¡¥¤¥ëlex.yy.c¤Ë¤Ç¤Ï¤Ê¤¯¡¢
stdout
¤Ë½ñ¤¹þ¤ß¤Þ¤¹¡£
¾éĹ¥â¡¼¥É¤Çưºî¤¹¤ë¤è¤¦¡¢
Flex¤ËÄÌÃΤ·¤Þ¤¹¡£
Flex¤Ï¡¢
À¸À®¤µ¤ì¤¿¥¹¥¥ã¥Ê¤Ë´Ø¤¹¤ëÅý·×¾ðÊó¤ÎÍ×Ìó¤òÀ¸À®¤·¤Æ¡¢
stdout
¤Ë½ÐÎϤ·¤Þ¤¹¡£
Í×Ìó¾ðÊó¤ÎÂ裱¹Ô¤Ë¤ÏFlex¤Î¥Ð¡¼¥¸¥ç¥óÈֹ桢
¼¡¤Î¹Ô¤Ë¤ÏÆüÉդȻþ¹ï¡¢
¤µ¤é¤Ë¼¡¤Î¹Ô¤Ë¤Ï¼ÂºÝ¤Ë»È¤ï¤ì¤Æ¤¤¤ë¥ª¥×¥·¥ç¥ó¤¬¼¨¤µ¤ì¤Þ¤¹¡£
Í×Ìó¾ðÊó¤Î¤³¤ì°Ê³°¤ÎÉôʬ¤Ï¡¢
Flex¤ä¤½¤Î¾¤ÎƱÍÍ¤Î¥×¥í¥°¥é¥à¤Îưºî¤Î¾ÜºÙ¤òÍý²ò¤·¤Æ¤¤¤ë¿Í°Ê³°¤Ë¤Ï¤Û¤È¤ó¤É°ÕÌ£¤ò»ý¤Á¤Þ¤»¤ó¡£
¥Õ¥¡¥¹¥È¡¦¥¹¥¥ã¥Ê¡Êfast scanner¡Ë¤òÀ¸À®¤¹¤ë¤è¤¦¡¢ Flex¤ËÄÌÃΤ·¤Þ¤¹¡£ ¤³¤ì¤Ï¡¢ ‘-CF’¤ÈƱÅù¤Ç¤¹¡£ ¾ÜºÙ¤Ë¤Ä¤¤¤Æ¤Ï¡¢ See ¥¹¥¥ã¥Ê¤ÎºÇŬ²½¡£
¤³¤Î¥ª¥×¥·¥ç¥ó¤Ï¡¢ ¥·¥§¥ë¾å¤ä¡¢ ·¿¤ò»ý¤ÄÆþÎϾðÊó¤ò¼õ¤±ÉÕ¤±¤ëɬÍפΤ¢¤ë¥×¥í¥°¥é¥àÆâ¤Ç»È¤¦¤³¤È¤Î¤Ç¤¤ëÂÐÏ÷¿¥¹¥¥ã¥Ê¤òÀ¸À®¤¹¤ë¤è¤¦¡¢ Flex¤ËÄÌÃΤ·¤Þ¤¹¡£ ¾ÜºÙ¤Ë¤Ä¤¤¤Æ¤Ï¡¢ See Interactive Scanners¡£
Ãí¡§‘-I’¥ª¥×¥·¥ç¥ó¤Ï¡¢ ‘-Cf’¡¢‘-f’¡¢‘-CF’¡¢‘-F’¤Î³Æ¥ª¥×¥·¥ç¥ó¤È°ì½ï¤Ë»È¤¦¤³¤È¤Ï¤Ç¤¤Þ¤»¤ó¡£
¥Ç¥Õ¥©¥ë¥È¤Ç¤ÏFlex¤Ï¡¢
¥¨¥é¡¼¤¬¥¹¥¥ã¥ÊÄêµÁ¤Î¤É¤³¤ÇȯÀ¸¤·¤¿¤Î¤«¤òÄÉÀפǤ¤ë¤è¤¦¤Ë¡¢
À¸À®¤µ¤ì¤¿¥¹¥¥ã¥Ê¤Î¥³¡¼¥ÉÃæ¤Ë#line
»Ø¼¨»Ò¤òÀ¸À®¤·¤Þ¤¹¡£
‘-L’¥ª¥×¥·¥ç¥ó¤Ï¡¢
¤³¤Î#line
»Ø¼¨»Ò¤òÀ¸À®¤¹¤ëµ¡Ç½¤òÍÞÀ©¤·¤Þ¤¹¡£
Flex¤ò¥È¥ì¡¼¥¹¡¦¥â¡¼¥É¤Ç¼Â¹Ô¤µ¤»¤Þ¤¹¡£
Flex¤Ï¡¢
ÆþÎϾðÊó¡¢¥¹¥¥ã¥ó½èÍý¥Æ¡¼¥Ö¥ë¡¢Æ±Åù¥¯¥é¥¹¡Êequivalence class¡Ë¡¢¤ª¤è¤Ó¥á¥¿Æ±Åù¥¯¥é¥¹¡Êmeta-equivalence class¡Ë¤Ë´Ø¤¹¤ë¥á¥Ã¥»¡¼¥¸¤òÀ¸À®¤·¤Æ¡¢
¡Êstderr
¤Ë¡Ë½ñ¤¹þ¤ß¤Þ¤¹¡£
¤³¤Î¾ðÊó¤Ï¡¢
Flex¤ÎÆâÉôŪ¤Êưºî¤òÍý²ò¤·¤Æ¤¤¤Ê¤¤¿Í¤Ë¤Ï¡¢
¤Û¤È¤ó¤É°ÕÌ£¤ò»ý¤¿¤Ê¤¤¤Ç¤·¤ç¤¦¡£
¤³¤Î¥ª¥×¥·¥ç¥ó¤Ï¡¢ 8¥Ó¥Ã¥È¤ÎÆþÎϾðÊó¤ò¼õ¤±ÉÕ¤±¤ë¤³¤È¤Î¤Ç¤¤ë¥¹¥¥ã¥Ê¤òÀ¸À®¤¹¤ë¤è¤¦¡¢ Flex¤ËÄÌÃΤ·¤Þ¤¹¡£ 7¥Ó¥Ã¥È¤ÎÆþÎϾðÊó¤·¤«¼õ¤±ÉÕ¤±¤Ê¤¤¥¹¥¥ã¥Ê¤Ë8¥Ó¥Ã¥È¤ÎÆþÎϾðÊó¤òÍ¿¤¨¤¿¾ì¹ç¤Î·ë²Ì¤Ï¡¢ ͽ¬ÉÔǽ¤Ç¤¹¡£
¥¹¥¥ã¥ó½èÍý¥Æ¡¼¥Ö¥ë¤ò¤É¤Î¤è¤¦¤Ë°µ½Ì¤¹¤ë¤«¤ò¡¢ Flex¤ËÄÌÃΤ·¤Þ¤¹¡£ ¾ÜºÙ¤Ë¤Ä¤¤¤Æ¤Ï¡¢ See ¥¹¥¥ã¥Ê¤ÎºÇŬ²½¤ò»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£
À¸À®¤µ¤ì¤ë¥¹¥¥ã¥Ê¤Î¥Ù¡¼¥¹¤È¤·¤Æ¡¢ skeleton_file¤Ç»ØÄꤵ¤ì¤ë¥Õ¥¡¥¤¥ë¤ò»È¤¦¤è¤¦¡¢ Flex¤ËÄÌÃΤ·¤Þ¤¹¡£ ¤³¤ì¤ò»È¤¦¤³¤È¤Ï¤Û¤È¤ó¤É¤¢¤ê¤Þ¤»¤ó¤¬¡¢ MS-DOS¾å¤Ç¤Ï¤³¤ì¤Ë¤è¤Ã¤ÆÉ¸½à¤Î¥¹¥¥ã¥Ê¡¦¥¹¥±¥ë¥È¥ó¤Ø¤Î¥Ñ¥¹¤òÀßÄꤹ¤ë¤³¤È¤¬¤Ç¤¤Þ¤¹¡£