Я пытался принимать this code и преобразование его в чем-то для проекта, я работаю для обработки языка программирования, но я бегу на вопрос с упрощенной версии:Простой рекурсивный спуск в Pyparsing
op = oneOf('+ -/*')
lparen, rparen = Literal('('), Literal(')')
expr = Forward()
expr << (Word(nums) | (expr + op + expr) | (lparen + expr + rparen))
Я играл с несколькими различными модификациями этой простой установки. Обычно, пытаясь что-то вроде:
print(expr.parseString('1+2'))
Вернется ['1']
. В то время как я увязнуть в глубокой рекурсии с чем-то вроде:
print(expr.parseString('(1+2)'))
Что я отсутствующего относительно простой рекурсии, что я не могу разобрать произвольно арифметические выражения, такие как 1+(2 * 3-(4*(5+6)-(7))...
?
Не могли бы вы добавить несколько советов о том, как преобразовать 'выраж :: выраж оп выраж 'к какой-либо другой форме, которую может обрабатывать Pyparsing, например, в моем случае по адресу http://stackoverflow.com/questions/15438015/stack-overflow-when-pyparsing-ada-2005-scoped-identifiers-using-reference-manual –