[ANTLR获取所有函数参数

问题描述 投票:0回答:1

我具有如下功能,

int foo(int i, int i2, int i3)
{
   return 0;
}

我使用visitDeclaration访问所有函数声明,然后从那里来到parameterdeclarationlist(),我可以看到里面有多个parameterdeclaration具有我所需要的全部。

我可以通过类似的方法得到第一个论点,

...
    paramclaus = paramsqual.parameterdeclarationclause()
    if paramclaus is not None:
        paramdeclst = paramclaus.parameterdeclarationlist()
        paramdecltn = paramdeclst.parameterdeclaration()
        print(paramdecltn.getText())

但是我无法遍历所有其他参数声明对象。我还实现了visitParameterdeclarationlist,该函数为我提供了函数参数,但是后来我不知道如何获取这些参数的函数名称。

提前感谢。

python-3.x antlr antlr4
1个回答
0
投票

如果您更改:

parameterdeclarationlist
   : parameterdeclaration
   | parameterdeclarationlist ',' parameterdeclaration
   ;

进入:

parameterdeclarationlist
   : parameterdeclaration (',' parameterdeclaration)*
   ;

您可以执行以下操作:

paramdeclst = paramclaus.parameterdeclarationlist()

for paramdecltn in paramdeclst.parameterdeclaration():
    print(paramdecltn.getText())
© www.soinside.com 2019 - 2024. All rights reserved.