Antlr4 中语义谓词的语法



ANTLR3中什么是"语义谓词"?Bart Kiers很好地概述了Antlr3中的不同语义谓词。

太糟糕了,语法/语义在 Antlr4 中似乎发生了变化,所以这无法编译:

end_of_statement
    :   ';'
    |   EOF
    |   {input.LT(1).getType() == RBRACE}? =>
    ;
RBRACE
    : '}'
    ;

有人可以告诉我如何做第三种end_of_statement情况:如果下一个令牌是"}",则接受但不使用它。

现在只有一种类型的语义谓词,如下所示:

{ <<boolean-epxression>> }?

抽象类 Parser(生成的解析器从中扩展)的 input 属性现在前面有一个下划线。

因此,在您的情况下,以下 ANTLR v3 语法:

{input.LT(1).getType() == RBRACE}? =>

在 ANTLR v4 中看起来像这样:

{_input.LT(1).getType() == RBRACE}?

相关内容

  • 没有找到相关文章

最新更新