Пример #1
0
        private static int Run(string source)
        {
            Scanner scanner = new Scanner(source);

            Token[] tokens = scanner.ScanTokens().ToArray();

            Parser parser = new Parser(tokens);

            Stmt[] statements = parser.Parse().ToArray();


            var astPrinter = new AstPrinter();

            foreach (Stmt stmt in statements)
            {
                foreach (string print in astPrinter.PrintStmt(stmt))
                {
                    Console.WriteLine(print);
                }
            }

            if (HadError)
            {
                Console.Read();
                return(65);
            }

            Resolver resolver = new Resolver(Interpreter);

            resolver.Resolve(statements);
            if (HadError)
            {
                Console.Read();
                return(65);
            }

            Interpreter.Interpret(statements);
            if (HadRuntimeError)
            {
                Console.Read();
                return(70);
            }

            Console.Read();
            return(0);
        }