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樹語法內聯解釋可變數量樹節點的建議是什麼?