Ejemplo n.º 1
0
        public void VisitFunctionStmt(FunctionStmt stmt)
        {
            Declare(stmt.Name);
            Define(stmt.Name);

            ResolveFunction(stmt, FunctionType.Function);
        }
Ejemplo n.º 2
0
        private void ResolveFunction(FunctionStmt function, FunctionType type)
        {
            var enclosingFunction = currentFunction;

            currentFunction = type;
            BeginScope();
            foreach (var param in function.Parameters)
            {
                Declare(param);
                Define(param);
            }
            Resolve(function.Body);
            EndScope();
            currentFunction = enclosingFunction;
        }
Ejemplo n.º 3
0
 public LoxFunction(FunctionStmt declaration, Environment closure, bool isInitializer)
 {
     this.declaration   = declaration;
     this.closure       = closure;
     this.isInitializer = isInitializer;
 }
Ejemplo n.º 4
0
        public void VisitFunctionStmt(FunctionStmt stmt)
        {
            var function = new LoxFunction(stmt, environment, false);

            environment.Define(stmt.Name.Lexeme, function);
        }