def t_Dstring(t): r'".*?[^\\]"' t.type='STRING' x=Node('String') x.value=t.value[1:-1] t.value = x return t
def t_Sstring(t): r"'.*?[^\\]'" t.type='STRING' x=Node('String') x.value=t.value[1:-1] t.value = x return t
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
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
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]
def p_ftype1(p): """ftypeL : EXCLAMATION LBRACKET""" p[0] = Node("NAME") p[0].value = "("
def p_type01(p): """type_ptr : EXCLAMATION MULT""" p[0] = Node("NAME") p[0].value = "*"
def t_INT(t): r'\d+' x = Node('Int') x.value = int(t.value) t.value = x return t
def t_FLOAT(t): r'\d+\.\d+' x = Node('Float') x.value = float(t.value) t.value = x return t
def p_assign5(p): '''assign : commalist_expr EQ expr ''' p[0] = Node('Assign') p[0].target = p[1] p[0].value = p[3]
def p_assign3(p): '''assign : unary_expr EQ expr ''' p[0] = Node('Assign') p[0].target = p[1] p[0].value = p[3]
def p_assign2(p): '''assign : vdef EQ expr ''' p[0] = Node('Assign') p[0].target = p[1] p[0].value = p[3]
def p_return(p): ''' return : RETURN expr''' p[0]=Node('Return') p[0].value =p[2]