Sophie

Sophie

distrib > Mandriva > 2010.0 > i586 > media > contrib-release > by-pkgid > 1142aab15abbf19b571c813fc39a9643 > files > 7

python-dparser-1.15-1mdv2009.1.i586.rpm

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)
''')