解析 – 在Lex / Flex中启动状态

前端之家收集整理的这篇文章主要介绍了解析 – 在Lex / Flex中启动状态前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在使用Flex和Bison作为解析器生成器,但是我的扫描器中的启动状态有问题.

我正在使用独占规则来处理评论,但这个语法似乎与引用的标记不匹配:

%x COMMENT

//                    { BEGIN(COMMENT); }
<COMMENT>[^\n]        ;
<COMMENT>\n           { BEGIN(INITIAL); }

"=="                  { return EQUALEQUAL; }

.                     ;

在这个简单的例子中:

// a == b

除非我包含此规则,否则不完全匹配评论

<COMMENT>"=="             ;

如何在不必将所有这些令牌添加到我的独家规则中的情况下解决这个问题?

解决方法

匹配Lex / Flex中的C风格注释或者有详细记录的内容

in the documentation,以及互联网周围的各种变化.

以下是Flex文档中的变体:

<INITIAL>{
     "//"              BEGIN(IN_COMMENT);
     }
     <IN_COMMENT>{
     \n      BEGIN(INITIAL);
     [^\n]+    // eat comment
     "/"       // eat the lone /
     }

猜你在找的Flex相关文章