ANTLR получить все аргументы функции - PullRequest
0 голосов
/ 22 апреля 2020

У меня есть функция, как показано ниже,

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, который дал мне аргументы функции, но потом я не знаю, как получить имя функции для этих параметров.

Заранее спасибо.

1 Ответ

2 голосов
/ 22 апреля 2020

Если вы измените:

parameterdeclarationlist
   : parameterdeclaration
   | parameterdeclarationlist ',' parameterdeclaration
   ;

на:

parameterdeclarationlist
   : parameterdeclaration (',' parameterdeclaration)*
   ;

, вы можете сделать что-то вроде этого:

paramdeclst = paramclaus.parameterdeclarationlist()

for paramdecltn in paramdeclst.parameterdeclaration():
    print(paramdecltn.getText())
...