Exemplo n.º 1
0
    public object VisitFunctionStatement(Statement.Function stmt)
    {
        var name         = stmt.Identifier;
        var parameters   = stmt.Parameters.Count;
        var returnValues = stmt.ReturnValue == null ? 0 : 1;

        current = new WASMFunction(parameters, returnValues, name);
        functions.Declare(name);

        // TODO too many nested envs?
        environment.EnterInner();
        passByVar.Add(name, new List <bool>());
        // TODO pass by
        foreach (var param in stmt.Parameters)
        {
            environment.Declare(param.Identifier);
            current.Locals++;
            passByVar[name].Add(param.IsRef);
        }

        stmt.Body.Accept(this);
        wasm.addFunction(current);

        environment.ExitInner();

        return(null);
    }
Exemplo n.º 2
0
 public void addFunction(WASMFunction func)
 {
     functions.Add(func);
 }