Esempio n. 1
0
def t_Dstring(t):
    r'".*?[^\\]"'
    t.type='STRING'
    x=Node('String')
    x.value=t.value[1:-1]
    t.value = x
    return t
Esempio n. 2
0
def t_Sstring(t):
    r"'.*?[^\\]'"
    t.type='STRING'
    x=Node('String')
    x.value=t.value[1:-1]
    t.value = x
    return t
Esempio n. 3
0
def p_assign4(p):
    '''assign : commalist_expr  EQ  commalist_expr
    '''
    p[0] = Node('Assign')
    p[0].target =Node('tuple')
    p[0].target.elems =p[1].elems
    p[0].value =Node('tuple')
    p[0].value.elems =p[3].elems
Esempio n. 4
0
def t_NAME(t):
    r"[a-zA-Z_]([a-zA-Z0-9_])*"
    if t.value in keyword_map:
        t.type=keyword_map[t.value]
    else:
        x = Node('Name')
        x.value=t.value
        t.value = x
    return t
Esempio n. 5
0
def p_cast(p):
    '''cast : list tuple %prec AT
                | list list %prec AT
                | list unary_expr %prec AT
    '''
    p[0] = Node('CAST')
    if len(p[1].elems)>1: 
       print 'Syntax error while type casting at %s'%p.lineno(1)
    p[0].ctype = p[1].elems[0]
    p[0].value = p[2]
Esempio n. 6
0
def p_ftype1(p):
    """ftypeL : EXCLAMATION LBRACKET"""
    p[0] = Node("NAME")
    p[0].value = "("
Esempio n. 7
0
def p_type01(p):
    """type_ptr : EXCLAMATION MULT"""
    p[0] = Node("NAME")
    p[0].value = "*"
Esempio n. 8
0
def t_INT(t):
    r'\d+'
    x = Node('Int')
    x.value = int(t.value)
    t.value = x
    return t
Esempio n. 9
0
def t_FLOAT(t):
    r'\d+\.\d+'
    x = Node('Float')
    x.value = float(t.value)
    t.value = x
    return t
Esempio n. 10
0
def p_assign5(p):
    '''assign : commalist_expr  EQ  expr
    '''
    p[0] = Node('Assign')
    p[0].target = p[1]
    p[0].value = p[3]
Esempio n. 11
0
def p_assign3(p):
    '''assign : unary_expr    EQ  expr
    '''
    p[0] = Node('Assign')
    p[0].target = p[1]
    p[0].value = p[3]
Esempio n. 12
0
def p_assign2(p):
    '''assign : vdef          EQ  expr
    '''
    p[0] = Node('Assign')
    p[0].target = p[1]
    p[0].value = p[3]
Esempio n. 13
0
def p_return(p):
    ''' return : RETURN expr'''
    p[0]=Node('Return')
    p[0].value =p[2]