Pyparsing всегда вставляет список в setParseAction - PullRequest
0 голосов
/ 13 мая 2018

Очевидно, что если вы добавите какое-либо действие синтаксического анализа и вернете результат в этом действии, результат всегда будет инкапсулирован в список, углубляющий дерево вывода.

Полагаю, это для возврата нескольких значений, но это значительно усложняет случайное использование библиотеки, потому что вам придется помнить, какие части дерева вы заменили, и вызывать result.normalstruct.replaced[0] (или даже хуже result.normalstruct['replaced'][0])

Это немного странно и усложняет рефакторинг, поэтому я бы хотел избежать этого. Любые советы?

1 Ответ

0 голосов
/ 13 мая 2018

Проблема в том, что аргумент токен setParseAction уже является списком. Вместо работы на str(token_argument) я должен работать на str(token_argument[0]) и вернуть его. Нет больше углубления.

edit: хотя, видимо, так бывает не всегда. Произошло со мной слово action, но когда я попытался «развернуть» нулевой элемент результата выражения «And» из функтора setParseAction, он дал мне первое подвыражение.

Чувак, мне нужна последовательность.

...