Я пишу парсер для анализа математических выражений, которые содержат переменные между прочим. Мне нужен список всех захваченных переменных. Но я получаю только последнюю захваченную переменную. Ниже приведен минимальный пример, чтобы показать проблему.pyparsing: названные результаты?
>>> from pyparsing import *
>>> var = Word(alphas)
>>> expr = Forward()
>>> expr << var('var') + ZeroOrMore(Literal('+') + expr)
>>> foo = expr.parseString("x + y + z")
>>> foo
(['x', '+', 'y', '+', 'z'], {'var': [('x', 0), ('y', 2), ('z', 4)]})
>>> foo['var']
'z'
Я ожидал ['x', 'y', 'z']. Я использую pyparsing версии 2.1.
Спасибо, Пол. Просто интересно, почему listAllMatches не является True по умолчанию, мне кажется, что это более полезный случай. – Tima
Возможно, я мог бы обосноваться, но, скорее всего, это проблема истории. Сначала я реализовал одно значение return, а затем добавил параметр «listAllMatches» позже. «Более полезный случай»? Не так уверен в этом - через 12 лет после первого выпуска pyparsing только небольшая группа людей спросила об этой функции. Но я рад, что вы смогли решить вашу проблему с существующей функцией в pyparsing. – PaulMcG