1from dparser import Parser 2 3def d_add1(t): 4 '''add : add '+' mul''' 5 return t[0] + t[2] 6 7def d_add2(t, nodes): 8 '''add : mul''' 9 return nodes[0].user.t 10 11def d_mul1(t): 12 '''mul : mul '*' exp''' 13 return t[0]*t[2] 14 15def d_mul2(t): 16 '''mul : exp''' 17 return t[0] 18 19def d_exp1(t): 20 '''exp : "[0-9]+"''' 21 return int(t[0]) 22 23def d_exp2(t): 24 '''exp : '(' add ')' ''' 25 return t[1] 26 27if Parser().parse('''3*(3+4)''').getStructure() != 21: 28 print 'fail' 29