ANTLR 4:如何知道规则中子部分的存在

hqt*_*hqt 3 antlr4

我有这个代码:

varDeclaration
    :   type ID ('=' expression)? ';' 
    ;
Run Code Online (Sandbox Code Playgroud)

所以,并不总是('=' expression)存在。但是,有时,我想处理这部分,但不知道它在此上下文中是否存在。我正在使用 ANTLR 4(并且经常使用 Listener),我怎么知道这一点。

谢谢 :)

jav*_*vic 5

在您的 listener( exitVarDeclaration) 或visitor( visitVarDeclaration) 中检查是否ctx.expression() == null. 如果为空,('=' expression)则不存在。如果非空,那么它确实存在。