在What is a 'semantic predicate' in ANTLR3?中,Bart Kiers很好地概述了Antlr3中不同的语义谓词。太遗憾了,语法/语义似乎在Antlr4中发生了变化,因此这不会编译:
end_of_statement
: ';'
| EOF
| {input.LT(1).getType() == RBRACE}? =>
;
RBRACE
: '}'
;
请问如何实现end_of_statement的第三种情况:当下一个记号为 '}' 时接受但不消耗它。