Antlr4中语义谓词的语法

Antlr4中语义谓词的语法,antlr,antlr4,Antlr,Antlr4,在本文中,Bart Kiers对Antlr3中的不同语义谓词进行了很好的概述 太糟糕了,Antlr4中的语法/语义似乎发生了更改,因此无法编译: end_of_statement : ';' | EOF | {input.LT(1).getType() == RBRACE}? => ; RBRACE : '}' ; 有人能告诉我如何执行end_of_语句的第三种情况:如果下一个标记是“}”,则接受,但不要使用它。现在只有一种语

在本文中,Bart Kiers对Antlr3中的不同语义谓词进行了很好的概述

太糟糕了,Antlr4中的语法/语义似乎发生了更改,因此无法编译:

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

RBRACE
    : '}'
    ;

有人能告诉我如何执行end_of_语句的第三种情况:如果下一个标记是“}”,则接受,但不要使用它。

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

{ <<boolean-epxression>> }?
在ANTLR v4中看起来是这样的:

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

效果很好。再次谢谢你!
{_input.LT(1).getType() == RBRACE}?