public LoxFunction(Token name, Expr.Function declaration, Environment closure, bool isInitializer) { _name = name; _declaration = declaration; _closure = closure; _isInitializer = isInitializer; }
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)}"); }
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(); }
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);
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); }
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; }
public void EnterHandleTopLevelExpression(Expr.Function data) { }
public void EnterHandleDefinition(Expr.Function data) { }
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)); }
public void ExitHandleDefinition(Expr.Function data) { //Console.WriteLine($"ExitHandleDefinition {data.Proto.Name}"); this._visitor.Visit(data); }