Previous: Multiple Scanners, Up: Useful Code [Contents][Index]
¹Ô¿ô¤ò¥«¥¦¥ó¥È¤·¤¿¤¤¤Î¤Ç¤¢¤ì¤Ð¡¢ ¥Õ¥¡¥¤¥ë¤ÎÀèÆ¬¤Î¥ª¥×¥·¥ç¥ó¤ÎC¥³¡¼¥É¡¦¥»¥¯¥·¥ç¥ó¤ËÊÑ¿ô¤òÄêµÁ¤·¤Æ¡¢ ²þ¹Ô¤ò¥Á¥§¥Ã¥¯¤·¤Þ¤¹¡£ ¥¹¥¿¡¼¥È¾õÂÖ¤ÎÃæ¤Ç¤â²þ¹Ô¤ò¥Á¥§¥Ã¥¯¤¹¤ë¤Î¤ò˺¤ì¤Ê¤¤¤è¤¦¤Ë¤·¤Æ¤¯¤À¤µ¤¤¡£ ¤µ¤â¤Ê¤¤¤È¡¢ ¹Ô¿ô¤Î¥«¥¦¥ó¥È¤Ï¤¦¤Þ¤¯¤¤¤¤Þ¤»¤ó¡£ Î㤨¤Ð¡¢ °Ê²¼¤Î¤è¤¦¤Ë¤·¤Þ¤¹¡£
%{ int linenumber = 0; %}
%x COMMENT STRING %% "/*" BEGIN(COMMENT); <COMMENT>\n line_number += 1; <COMMENT>[^\n]* <COMMENT>"*/" BEGIN(INITIAL); \" BEGIN(STRING) <STRING>\\\n line_number += 1; <STRING>[^\n\\\"]* <STRING>\" BEGIN(INITIAL); \n line_number += 1;
yyin
¤Èyyout
¤ò¥ê¥À¥¤¥ì¥¯¥È¤¹¤ë¤³¤È¤Ë¤è¤Ã¤Æ¡¢
¥¹¥¥ã¥Ê¤ò
¡Ê¤·¤¿¤¬¤Ã¤ÆBison¤Ë¤è¤ë¥Ñ¡¼¥µ¤ò¤â¡Ë
¥½¥±¥Ã¥È¤Ë¥¢¥¿¥Ã¥Á¤¹¤ë¤³¤È¤¬¤Ç¤¤Þ¤¹¡£
¤³¤ì¤Ï¡¢
fdopen()
¤ò¸Æ¤Ó½Ð¤¹¤³¤È¤Ë¤è¤Ã¤Æ¹Ô¤¤¤Þ¤¹¡£
Î㤨¤Ð¡¢
°Ê²¼¤Î¤è¤¦¤Ë¤Ê¤ê¤Þ¤¹¡£
yyin = fdopen(connection, "r"); yyout = fdopen(connection, "w");
¤³¤³¤Çconnection
¤Ï¡¢
³ÎΩ¤µ¤ì¤¿¥½¥±¥Ã¥È¡¦¥³¥Í¥¯¥·¥ç¥ó¤Î¥Õ¥¡¥¤¥ë¡¦¥Ç¥£¥¹¥¯¥ê¥×¥¿¤Ç¤¹¡£