PyParsing: как проанализировать вызов функции и вернуть ее в виде строки - PullRequest
1 голос
/ 13 января 2020

С здесь У меня есть этот код для разбора вызова функции:

functionName = Word(alphanums + '_')
functionBody = Forward()
functionBody <<= functionName + (Literal("(") + Optional( delimitedList ( functionBody | Word(alphanums + '_') | "''"),'') + Literal(")"))

Но при вызове:

result = functionBody.parseString('function(param1,param2,param3)')

я получил такой результат:

['function', '(', 'param1', 'param2', 'param3', ')']

Есть ли способ получить этот результат взамен:

['function(param1, param2, param3)']

То есть: синтаксический анализ вызова функции написан хорошо, но он возвращается как строка, а не как массив без использования предложения Python join?

1 Ответ

0 голосов
/ 14 января 2020

Благодарю мистера PaulMcG , поскольку он дал три возможных ответа в своем комментарии, но я выкладываю решение для кого-то, кому это тоже может понадобиться. originalTextFor сделал трюк для меня:

functionName = Word(alphanums + '_')
functionBody = Forward()
functionBody <<= originalTextFor(functionName + (Literal("(") + Optional( delimitedList ( functionBody | Word(alphanums + '_') | "''"),'') + Literal(")")))

Теперь он возвращается:

['function(param1,param2,param3)']
...