Ejemplo n.º 1
0
        public object VisitFunctionStmt(Stmt.Function stmt)
        {
            LoxFunction function = new LoxFunction(stmt, environment, false);

            environment.Define(stmt.Name.Lexeme, function);
            return(null);
        }
Ejemplo n.º 2
0
        public Void VisitFunctionStmt(Stmt.Function stmt)
        {
            var function = new LoxFunction(stmt, _environment, false);

            _environment.Define(stmt.Name.Lexeme, function);
            return(null);
        }
Ejemplo n.º 3
0
 public Void VisitFunctionStmt(Stmt.Function stmt)
 {
     Declare(stmt.Name);
     Define(stmt.Name);
     ResolveFunction(stmt, FunctionType.FUNCTION);
     return(null);
 }
Ejemplo n.º 4
0
        public object Visit(Stmt.Function _function)
        {
            Declare(_function.name);
            Define(_function.name);

            ResolveFunction(_function, FunctionType.FUNCTION);

            return(null);
        }
Ejemplo n.º 5
0
        private void ResolveFunction(Stmt.Function 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.º 6
0
        private void ResolveFunction(Stmt.Function function, FunctionType type)
        {
            FunctionType enclusingFunction = currentFunction;

            currentFunction = type;

            BeginScope();
            foreach (var param in function.Params)
            {
                Declare(param);
                Define(param);
            }
            Resolve(function.body);
            EndScope();

            currentFunction = enclusingFunction;
        }
Ejemplo n.º 7
0
        private void ResolveFunction(Stmt.Function function, FunctionType type)
        {
            FunctionType enclosingFunction = currentFunction;

            currentFunction = type;

            BeginScope();

            if (function.isStatic && type == FunctionType.INITIALIZER && function.parameters.Any())
            {
                Lox.Error(function.name, $"Static initializer should not take any parameters.");
            }

            foreach (var param in function.parameters)
            {
                Declare(param);
                Define(param);
            }
            Resolve(function.body);
            EndScope();
            currentFunction = enclosingFunction;
        }
Ejemplo n.º 8
0
 public LoxFunction(Stmt.Function declaration, Environment closure, bool isInitializer)
 {
     this.closure       = closure;
     this.isInitializer = isInitializer;
     this.declaration   = declaration;
 }
Ejemplo n.º 9
0
 public LoxFunction(Stmt.Function declaration, Environment closure, bool isInitializer)
 {
     _closure       = closure;
     _declaration   = declaration;
     _isInitializer = isInitializer;
 }
Ejemplo n.º 10
0
 public string VisitFunctionStmt(Stmt.Function stmt)
 {
     throw new NotImplementedException();
 }
Ejemplo n.º 11
0
 public string VisitFunctionStmt(Stmt.Function stmt) => throw new System.NotImplementedException();