he intentado tomar this code y convirtiéndolo en algo para un proyecto que estoy trabajando para el procesamiento de lenguaje de programación, pero estoy corriendo en un problema con una versión simplificada:descendente recursivo simple en PyParsing
op = oneOf('+ -/*')
lparen, rparen = Literal('('), Literal(')')
expr = Forward()
expr << (Word(nums) | (expr + op + expr) | (lparen + expr + rparen))
He jugado con una serie de modificaciones diferentes de esta configuración simple. Por lo general, tratando algo como:
print(expr.parseString('1+2'))
Will volver ['1']
. Mientras me pillan en profundidad de recursión con algo como:
print(expr.parseString('(1+2)'))
¿Qué me falta con respecto a la recursividad sencilla que no puedo analizar arbitrariamente expresiones aritméticas, tales como 1+(2 * 3-(4*(5+6)-(7))...
?
Podría por favor agregue algunos consejos sobre cómo convertir 'expr expr expr :: op 'de alguna otra forma que Pyparsing pueda manejar, por ejemplo en mi caso en http://stackoverflow.com/questions/15438015/stack-overflow-when-pyparsing-ada-2005-scoped-identifiers-using-reference-manual –