示例#1
0
        public void SimpleExpr()
        {
            var src   = "1^2";
            var lexer = new Lexer(new MemoryStream(Encoding.UTF8.GetBytes(src)));

            lexer.Start();
            var parser      = new ExprParser(lexer.TokStream);
            var ast         = parser.Parse(0);
            var interpreter = new AstInterpreter();

            Console.Write(Convert.ToInt64(interpreter.Eval(ast)));
        }
示例#2
0
 public override object Call(AstInterpreter interpreter, IEnumerable <object> arguments)
 {
     return(DateTime.UtcNow.Subtract(new DateTime(1970, 1, 1)).TotalSeconds);
 }
示例#3
0
        public override object Call(AstInterpreter interpreter, IEnumerable <object> arguments)
        {
            interpreter.Reset();

            return(null);
        }
示例#4
0
文件: Resolver.cs 项目: h2oboi89/lox
        public static void Resolve(AstInterpreter interpreter, IEnumerable <Statement> statements)
        {
            var resolver = new Resolver(interpreter);

            resolver.Resolve(statements);
        }
示例#5
0
文件: Resolver.cs 项目: h2oboi89/lox
 private Resolver(AstInterpreter interpreter)
 {
     scope = new Scope(interpreter);
 }
示例#6
0
 public Scope(AstInterpreter interpreter)
 {
     this.interpreter = interpreter;
 }
示例#7
0
        public override object Call(AstInterpreter interpreter, IEnumerable<object> arguments)
        {
            interpreter.RaiseOut(arguments.First());

            return null;
        }