from dparser import Parser def d_program(t): '''program : (expression)+ ''' for e in t[0]: print e def d_expression_1(t): '''expression : expression binary_operator expression''' if t[1] == '+': return t[0] + t[2] elif t[1] == '-': return t[0] - t[2] elif t[1] == '*': return t[0] * t[2] elif t[1] == '/': return t[0] / t[2] def d_binary_operator(t): '''binary_operator : '+' $binary_op_left 1 | '-' $binary_op_left 1 | '*' $binary_op_left 2 | '/' $binary_op_left 2''' return t[0] def d_expression_2(t): '''expression : '(' expression ')' ''' return t[1] def d_expression_3(t): '''expression : "[0-9]+" ''' return int(t[0]) Parser().parse(''' 1+1 8*(3+2) ''')