首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Lex -识别歧义标记

Lex -识别歧义标记
EN

Stack Overflow用户
提问于 2012-05-07 18:07:31
回答 1查看 172关注 0票数 0

全,

在我的Lex文件中,我们将一些运算符识别为标记,其中一些运算符是

代码语言:javascript
复制
":p" 
and 
":"  

问题是,任何以:p开头的单词,如":presentation",都不会被识别为

代码语言:javascript
复制
':' word             /*grammar*/

并且由于返回的lex值":p"作为下一个令牌而触发解析错误

我该如何解决这个歧义呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-05-07 20:23:35

相反,您应该定义一个词法分析器规则来匹配整个"symbol“标记,例如

代码语言:javascript
复制
:[a-zA-Z_][a-zA-Z0-9_]*    { yylval.symbol = strdup(yytext + 1); return SYMBOL; }

如果需要,您可以在此规则中检查:p和特殊情况,例如:

代码语言:javascript
复制
:[a-zA-Z_][a-zA-Z0-9_]*    {
    if (strcmp(yytext, ":p") == 0) {
        return OP_P;
    }

    yylval.symbol = strdup(yytext + 1);
    return SYMBOL;
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10480215

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档