我有一个 Antlr4 问题。鉴于下面的语法摘录。测试访问者中是否存在可选的 actualParameters
子树的正确方法是什么?
我已经尝试了 procedureCallStatement 上下文的 getChildCount 方法。我还在上下文中测试了空的 actualParameters 参数。
如果不存在,我不想访问 actualParameters 子树。这样做会导致异常。
谢谢!
开尔文约翰逊
program : statement (';' statement)* ';'?;
statement : CALLPREFIX('(' actualParameters? ')')? #procedureCallStatement;
actualParameters : expressionStatement (';' expressionStatement)* ;
expressionStatement : '(' expressionStatement ')' #parensExpression
| IDENT'[' expressionStatement ']' #subscript
...
最佳答案
如果解析了,自动生成的上下文方法 ProcedureCallStatementContext.actualParameters()
将返回 ActualParametersContext
,否则将返回 null
。
您可能会在这样的访问者中使用它:
public T VisitProcedureCallStatement(ProcedureCallStatementContext ctx) {
if (ctx.actualParameters() != null) {
// do something here
}
...
}
关于ANTLR4 访问者子树检查,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13850276/