Пример #1
0
        public object visitFunctionStmt(Stmt.Function stmt)
        {
            var function = new RosellaFunction(stmt, environment);

            environment.define(stmt.name.lexeme, function);
            return(null);
        }
Пример #2
0
        public object call(Interpreter interpreter, IList <object> arguments)
        {
            var environment = new RosellaEnvironment(closure);

            for (var i = 0; i < [email protected]; i++)
            {
                environment.define(declaration.@params[i].lexeme, arguments[i]);
            }

            try
            {
                interpreter.executeBlock(declaration.body, environment);
            }
            catch (Return returnValue)
            {
                return(returnValue.value);
            }
            return(null);
        }
Пример #3
0
 public Interpreter(Action <RuntimeError> errorFunc)
 {
     this.errorFunc = errorFunc;
     environment    = globals;
     globals.define("clock", new Clock());
 }