我尝试着将这段代码转换为我正在进行的编程语言处理项目所需的形式,但是在一个简化版本中,我遇到了问题:
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))...
?
expr :: expr op expr
转换为 Pyparsing 可以处理的其他形式的提示?例如,在我的情况下,参考 https://dev59.com/hInis4cB2Jgan1znAYW_。 - Nordlöw