ho cercato di prendere this code e convertirlo in qualcosa per un progetto su cui sto lavorando per l'elaborazione del linguaggio di programmazione, ma sto correndo in un problema con una versione semplificata:Semplice discesa ricorsiva nel PyParsing
op = oneOf('+ -/*')
lparen, rparen = Literal('('), Literal(')')
expr = Forward()
expr << (Word(nums) | (expr + op + expr) | (lparen + expr + rparen))
Ho giocato con una serie di diverse modifiche a questa semplice installazione. Di solito, provare qualcosa di simile:
print(expr.parseString('1+2'))
torneranno ['1']
. Mentre mi beccano in profonda ricorsione con qualcosa di simile:
print(expr.parseString('(1+2)'))
Che cosa mi manca rispetto alla semplice ricorsione che non posso analizzare le espressioni aritmetiche arbitrariamente, come ad esempio 1+(2 * 3-(4*(5+6)-(7))...
?
La prego di aggiungere alcuni suggerimenti su come convertire 'espr :: expr op expr 'in qualche altro modo che Pyparsing può gestire, per esempio nel mio caso su http://stackoverflow.com/questions/15438015/stack-overflow-when-pyparsing-ada-2005-scoped-identifiers-using-reference-manual –