Next: Miscellaneous, Previous: Handling Numbers, Up: Useful Code [Contents][Index]
»þ¤Ë¤Ï¡¢
£±¤Ä¤Î¥×¥í¥°¥é¥à¤ÎÃæ¤ÇÊ£¿ô¤Î¥¹¥¥ã¥Ê¤ò»ý¤ÄɬÍפ¬¤¢¤ë¾ì¹ç¤¬¤¢¤ê¤Þ¤¹¤¬¡¢
¤³¤¦¤¹¤ë¤È¡¢
£²²ó°Ê¾å¸½¤ì¤ë´Ø¿ô¤äÊÑ¿ô¤Ë¤Ä¤¤¤Æ¡¢
¥ê¥ó¥«¤¬Ê¸¶ç¤ò¸À¤Ã¤Æ¤¤Þ¤¹¡£
¤³¤ì¤ò²óÈò¤¹¤ë¤¿¤á¤Ë¤Ï¡¢
¥¹¥¥ã¥Ê¤È¤½¤ì¤Ë´ØÏ¢¤¹¤ë¤¹¤Ù¤Æ¤Î¤â¤Î¤Î̾Á°¤òÊѹ¹¤¹¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£
¤¹¤Ù¤Æ¤Î¥¹¥¥ã¥Ê´Ø¿ô¡¢¥Þ¥¯¥í¡¢¤ª¤è¤Ó¥Ç¡¼¥¿¤Î̾Á°¤Ï‘yy’¤â¤·¤¯¤Ï‘YY’¤Ç»Ï¤Þ¤ê¤Þ¤¹¤Î¤Ç¡¢
¤³¤ì¤Ï¤¤ï¤á¤Æ´Êñ¤Ç¤¹¡£
¤·¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¤³¤È¤Ï¡¢
̾Á°¤ÎÀÜÆ¬¼¤òÊѹ¹¤¹¤ë¤³¤È¤À¤±¤Ç¤¹¡£
¤³¤ì¤Ïsed
¤ò»È¤Ã¤Æ´Êñ¤Ë¹Ô¤¦¤³¤È¤¬¤Ç¤¤Þ¤¹¤¬¡¢
¤³¤³¤Ç¤Ï¤ª¤â¤·¤íȾʬ¤Ç¡¢
¤³¤ì¤ò¹Ô¤¦flex¥¹¥¥ã¥Ê¤ò¼¨¤·¤Þ¤·¤ç¤¦¡£20
/* * replace.lex : flex¤Ë¤è¤êÀ¸À®¤µ¤ì¤¿¥¹¥¥ã¥Ê¤ä * bison¤Ë¤è¤êÀ¸À®¤µ¤ì¤¿¥Ñ¡¼¥µ¤Î * °ìÉô¤Î̾Á°¤òÊѹ¹¤¹¤ë´Êñ¤Ê¥Õ¥£¥ë¥¿ */ %{ #include <stdio.h> char lower_replace[1024]; char upper_replace[1024]; %}
%% "yy" fprintf(yyout,"%s",lower_replace); "YY" fprintf(yyout,"%s",upper_replace);
%% int main(argc,argv) int argc; char **argv; { if(argc < 3){ printf("Usage %s lower UPPER\n",argv[0]); exit(1); } strcpy(lower_replace,argv[1]); strcpy(upper_replace,argv[2]); yylex(); return(0); }
¤¹¤Ù¤Æ¤Î¥¹¥¥ã¥Ê´Ø¿ô¤Î̾Á°¤òÊѹ¹¤¹¤ë¤Ë¤Ï¡¢ ¥³¥Þ¥ó¥É¥é¥¤¥ó¾å¤Ç°Ê²¼¤Î¤è¤¦¤Ë¼Â¹Ô¤¹¤ë¤À¤±¤Ç¤¹¡£
replace myscan_ MYSCAN_ < lex.yy.c > myscan.c
¤³¤ì¤Ë¤è¤ê¡¢ ¹¥¤¤Ê¤À¤±Â¿¤¯¤Î¥¹¥¥ã¥Ê¤ò´Þ¤á¤ë¤³¤È¤¬¤Ç¤¤ë¤è¤¦¤Ë¤Ê¤ê¤Þ¤¹¡£ ¤Û¤È¤ó¤ÉƱ¤¸¤³¤È¤ò¡¢ ÇÓ¾Ū¥¹¥¿¡¼¥È¾õÂÖ¤ÈÊ£¿ô¤Î¥Ð¥Ã¥Õ¥¡¤ò»È¤Ã¤Æ¼Â¸½¤¹¤ë¤³¤È¤â²Äǽ¤Ç¤¹¤¬¡¢ ¤½¤ÎÊýË¡¤Ï¿¾¯Ê£»¨¤Ë¤Ê¤ê¤Þ¤¹¡£
Ãí¡§¤¤¤¯¤Ä¤«¤ÎFlexÆâÉô¥ë¡¼¥Á¥ó¤Ï¡¢ ¾ÍèFlex¥é¥¤¥Ö¥é¥ê¡Ê‘-lfl’¡Ë¤ÎÃæ¤Ë°Ü¤µ¤ì¤ë¤Ç¤·¤ç¤¦¡£ ¤½¤¦¤Ê¤ë¤È¡¢ ¤³¤Î¥Æ¥¯¥Ë¥Ã¥¯¤Ïµ¡Ç½¤·¤Ê¤¯¤Ê¤ê¤Þ¤¹¡£ ¤·¤«¤·¡¢ ¤³¤ÎÊѹ¹¤¬¹Ô¤ï¤ì¤ë»þ¤Ë¤Ï¡¢ Êѹ¹¤¹¤ëɬÍפΤ¢¤ë´Ø¿ô̾¤òÊѹ¹¤¹¤ëÊýË¡¤ò¡¢ Flex¼«¿È¤¬¥µ¥Ý¡¼¥È¤¹¤ë¤è¤¦¤Ë¤Ê¤ë¤Ç¤·¤ç¤¦¡£21
ÌõÃí¡§Flex 2.5¤Ç¤Ï¡¢ Flexµ¯Æ°»þ¤Ë‘-Pprefix’¥ª¥×¥·¥ç¥ó¤ò»ØÄꤹ¤ë¤«¡¢ ¥¹¥¥ã¥ÊÄêµÁ¥Õ¥¡¥¤¥ë¤ÎÃæ¤Ë‘%option prefix="prefix"’¤ò»ØÄꤹ¤ë¤³¤È¤Ë¤è¤Ã¤Æ¡¢ ÀÜÆ¬¼‘yy’¤òÊ̤Îʸ»úÎó¤ËÊѹ¹¤¹¤ë¤³¤È¤¬¤Ç¤¤Þ¤¹¡£
ÌõÃí¡§Flex 2.5¤Ç¤Ï¡¢ ‘-Pprefix’¥ª¥×¥·¥ç¥ó¤ä‘%option prefix="prefix"’¤ò»ØÄꤹ¤ë¤³¤È¤Ë¤è¤ê¡¢ ´Ø¿ô̾¤òÊѹ¹¤¹¤ë¤³¤È¤¬¤Ç¤¤Þ¤¹¡£