Esempio n. 1
0
 public LoxFunction(Token name, Expr.Function declaration, Environment closure, bool isInitializer)
 {
     _name          = name;
     _declaration   = declaration;
     _closure       = closure;
     _isInitializer = isInitializer;
 }
Esempio n. 2
0
        public void ExitHandleTopLevelExpression(Expr.Function data)
        {
            //Console.WriteLine($"ExitHandleTopLevelExpression {data.Proto.Name}");
            this._visitor.Visit(data);

            var method = this._visitor.Methods[data.Proto.Name];

            Console.WriteLine($"Evaluated to {method.methodInfo.Invoke(null, null)}");
        }
Esempio n. 3
0
        public void ExitHandleDefinition(Expr.Function data)
        {
            var value = this._visitor.Visit(data);

            if (value == null)
            {
                return;
            }
            this._visitor.Jit.AddEagerlyCompiledModule(this._visitor.Module);
            this._visitor.InitializeModuleAndPassManager();
        }
Esempio n. 4
0
        public Value Visit(Expr.Function stmt)
        {
            this.FunctionProtos[stmt.Proto.Name] = stmt.Proto;
            var function = this.GetFunction(stmt.Proto.Name);

            if (function == null)
            {
                return(null);
            }

            if (stmt.Proto.IsOperator && stmt.Proto.Arguments.Length == 2)
            {
                this._session.AddBinOpPrecedence(stmt.Proto.Name[^ 1], stmt.Proto.Precedence);
Esempio n. 5
0
        public void ExitHandleTopLevelExpression(Expr.Function data)
        {
            var value = this._visitor.Visit(data);

            if (value == null)
            {
                return;
            }
            var jitHandle = this._visitor.Jit.AddEagerlyCompiledModule(this._visitor.Module);

            this._visitor.InitializeModuleAndPassManager();
            var nativeFunc = this._visitor.Jit.GetFunctionDelegate <KaleidoscopeJit.CallbackHandler0>(data.Proto.Name);

            Console.WriteLine($"Evaluated to {nativeFunc()}");
            this._visitor.Jit.RemoveModule(jitHandle);
        }
Esempio n. 6
0
        private void ResolveFunction(Expr.Function function, FunctionType functionType)
        {
            var enclosingFunction = _currentFunction;

            _currentFunction = functionType;

            BeginScope();
            foreach (var parameter in function.parameters)
            {
                Declare(parameter);
                Define(parameter);
            }

            Resolve(function.body);
            EndScope();

            _currentFunction = enclosingFunction;
        }
Esempio n. 7
0
 public void EnterHandleTopLevelExpression(Expr.Function data)
 {
 }
Esempio n. 8
0
 public void EnterHandleDefinition(Expr.Function data)
 {
 }
Esempio n. 9
0
        public object VisitFunctionExpr(Expr.Function expr)
        {
            ResolveFunction(expr, FunctionType.Function);

            return(null);
        }
 public object VisitFunctionExpr(Expr.Function expr)
 {
     return(new LoxFunction(null, expr, _environment, false));
 }
Esempio n. 11
0
 public void ExitHandleDefinition(Expr.Function data)
 {
     //Console.WriteLine($"ExitHandleDefinition {data.Proto.Name}");
     this._visitor.Visit(data);
 }