【发布时间】:2011-10-06 19:13:48
【问题描述】:
我正在尝试将 Python PLY 用于简单的表达式解析器,但我无法让它工作。代码是available at 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) 之类的表达式会引发:
TypeError: unknown text at ')'
这些错误的根源是什么?
【问题讨论】: