Exemplo n.º 1
0
def make_arg(a,pref,nmap):
    sym = da.TypedSymbol(pref.rep + ':' + a.rep,a._type)
    if sym.rep in nmap:
        raise IvyError(a,"repeated formal parameter")
    declare_type(sym)
    nmap[a.rep] = sym
    return sym
Exemplo n.º 2
0
def do_varstmt(a):
        # make up a fresh name for local variable
        name = method_context.local_renamer(a.rep)
        local = da.TypedSymbol(name,a._type)
        vardecl(da.VarDecl(local))
        scope_context.locals[a.rep] = local
        scope_context.new_locals.append(local)
Exemplo n.º 3
0
def varstmt(s):
    global context
    dm,im = context.dm,context.im
    for a in s.args:
        if isinstance(a,da.AssignStmt):
            vn,vv = a.args
            if len(vn.args) == len(vv.args): # if false, we'll throw error compiling assignment
                for x,y in zip(vn.args,vv.args):
                    do_varstmt(da.TypedSymbol(x.symbol.rep,y.type_infer()))
            return a.to_ivy()
        else:
            do_varstmt(a)
def p_vardecl_symbol_colon_type_semi(p):
    'vardecl : SYMBOL COLON type'
    p[0] = da.TypedSymbol(p[1],p[3])
Exemplo n.º 5
0
def make_dummy(pref,v):
    ret = da.TypedSymbol(pref+v.rep,v._type)
    declare_type(ret)
    return make_app(ret)
Exemplo n.º 6
0
def make_temp(_type):
    ret = da.TypedSymbol(method_context.rn(''),_type)
    declare_type(ret)
    scope_context.new_locals.append(ret)
    return make_app(ret)