flex中的C ++多行注释语法

时间:2014-02-25 07:19:19

标签: c++ flex-lexer

我的flex脚本有问题。我为C ++多行注释编写它。我的弹性模式是:

"/""*"[^"*""/"]*"*""/"          {strcpy(mlc[mlc_count++],yytext);}

它可以找到一个多行评论。但是,当我将整个代码放在多行注释中时,它不起作用。我尝试了很多但找不到任何解决方案。

1 个答案:

答案 0 :(得分:1)

Flex一次读取一个缓冲区。使用正常匹配,单个令牌可以占用不超过一个数据缓冲区。如果内存服务,缓冲区通常是8千字节,所以一个比这更长的令牌将无法正确匹配。

通常情况下,您可以使用独有的开始条件解决此问题,这是一般订单:

"/*" BEGIN(COMMENT); 

<COMMENT>*/ BEGIN(INITIAL);
<COMMENT>.  { current_comment += yytext[0]; }