4
在创建内联ANTLR树语法解释程序时,我遇到了有关过程调用参数多重性的问题。在ANTLR树语法中解释可变数目的树节点
考虑以下(错误)树语法定义。
procedureCallStatement
: ^(PROCEDURECALL procedureName=NAME arguments=expression*)
{
if(procedureName.equals("foo")) {
callFooMethod(arguments[0], arguments[1]);
}elseif(procedureName.equals("bar")) {
callBarMethod(arguments[0], arguments[1], arguments[2]);
}
}
;
我的问题在于检索给定的参数。如果将表达式的已知量,我只想分配值出来这些表达自己的变量,例如:
procedureCallStatement
: ^(PROCEDURECALL procedureName=NAME argument1=expression argument2=expression)
{
...
}
;
然而,这并非如此。
鉴于此类情况,ANTLR树语法内联解释可变数量树节点的建议是什么?