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