美文网首页
ANTLR的一个常见误区

ANTLR的一个常见误区

作者: 残破的遗迹 | 来源:发表于2018-09-07 21:27 被阅读33次

    刚刚解决了一个问题,在 StackOverFlow 上的提问被标注为重复,有人给了一个答案:antlr4 - ANTLR 4.5 - Mismatched Input 'x' expecting 'x' - Stack Overflow

    来总结记录一下。

    ANTLR 生成的 lexer 和 parser 是几乎独立工作的,parser 无法影响 lexer 的行为(这里不考虑内嵌动作和 setmode 之类)。

    因此 ANTLR 生成的 lexer 将简单的按照最长匹配的原则,如果两条词法规则都可以最长匹配,那么按照在 grammar 文件中出现的顺序匹配。

    所以如果一条词法规则是另一条词法规则的子集,应尽量放到前面,如果这不能解决问题(或者引入可其他问题),那就只能另寻方案了,通常可以使用内嵌动作的办法解决。

    相关文章

      网友评论

          本文标题:ANTLR的一个常见误区

          本文链接:https://www.haomeiwen.com/subject/fpshgftx.html