【发布时间】:2014-02-25 07:19:19
【问题描述】:
我的 flex 脚本有问题。我为 C++ 多行注释编写它。我的弹性模式是:
"/""*"[^"*""/"]*"*""/" {strcpy(mlc[mlc_count++],yytext);}
它可以找到一个多行注释。但是当我将整个代码放在多行注释中时它不起作用。我尝试了很多,但找不到任何解决方案。
【问题讨论】:
标签: c++ flex-lexer
我的 flex 脚本有问题。我为 C++ 多行注释编写它。我的弹性模式是:
"/""*"[^"*""/"]*"*""/" {strcpy(mlc[mlc_count++],yytext);}
它可以找到一个多行注释。但是当我将整个代码放在多行注释中时它不起作用。我尝试了很多,但找不到任何解决方案。
【问题讨论】:
标签: c++ flex-lexer
Flex 一次读取输入一个缓冲区。使用正常匹配,单个标记最多可以占用一个数据缓冲区。如果内存可用,缓冲区通常约为 8 KB,因此长度超过该值的单个令牌将无法正确匹配。
通常,您可以使用排他的开始条件来解决这个问题,按照这个一般顺序:
"/*" BEGIN(COMMENT);
<COMMENT>*/ BEGIN(INITIAL);
<COMMENT>. { current_comment += yytext[0]; }
【讨论】: