加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-15 02:10:39 所属栏目:百科 来源:网络整理
导读:我正在使用Flex和Bison作为解析器生成器,但是我的扫描器中的启动状态有问题. 我正在使用独占规则来处理评论,但这个语法似乎与引用的标记不匹配: %x COMMENT// { BEGIN(COMMENT); }COMMENT[^n] ;COMMENTn { BEGIN(INITIAL); }"==" { return EQUALEQUAL; }.
我正在使用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 /
     }

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读