Я пытаюсь использовать Python PLY для простого парсера выражений, и я не могу заставить его работать.Код доступен на битбакете , но нарушающие его части:
Во-первых, определения:
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 ')'
Что является источником этих ошибок?