Exemplo n.º 1
0
        public object visitFunctionStmt(Stmt.Function stmt)
        {
            LoxFunction function = new LoxFunction(stmt, env, false);

            env.define(stmt.Name.Lexeme, function);
            return(null);
        }
Exemplo n.º 2
0
 public LoxFunction(Stmt.Function declaration, Envir closure,
                    bool isInitializer)
 {
     IsInitializer = isInitializer;
     Closure       = closure;
     Declaration   = declaration;
 }
Exemplo n.º 3
0
        public object visitFunctionStmt(Stmt.Function stmt)
        {
            declare(stmt.Name);
            define(stmt.Name);

            resolveFunction(stmt, FunctionType.FUNCTION);
            return(null);
        }
Exemplo n.º 4
0
        private void resolveFunction(Stmt.Function function, FunctionType type)
        {
            FunctionType enclosingFunction = currentFunction;

            currentFunction = type;
            beginScope();
            foreach (Token param in function.Parameters)
            {
                declare(param);
                define(param);
            }
            resolve(function.Body);
            endScope();
            currentFunction = enclosingFunction;
        }