我正在尝试将 Python PLY 用于简单的表达式解析器,但我无法让它工作。该代码可在 bitbucket 获得,但有问题的部分是:
首先,定义:
def p_expr_minus(p):
'''expr : expr MINUS term'''
p[0] = p[1]-p[3]
和
def p_term_divide(p):
'''term : term DIVIDE factor'''
p[0] = p[1]/p[3]
似乎是倒置的,给我结果:3-9 = 6 和 2 / 8 = 4。
其次,括号表达式factor: ( expr )
不起作用。特别是,部分:
def p_factor_brackets(p):
'''factor : OBRACKET expr CBRACKET'''
p[0] = p[2]
不能正常工作。解析诸如(9+7)
raises 之类的表达式:
TypeError: unknown text at ')'
这些错误的根源是什么?