Пример #1
0
        public string CompileString(string source)
        {
            var sw = new Stopwatch();

            Console.WriteLine("Parsing sources into tokens...");
            sw.Start();
            var tks = _tokenizer.Parse(source);

            sw.Stop();
            Console.WriteLine("Parsed to tokens in {0}ms", sw.ElapsedMilliseconds);
            var ts = new TokenStream(tks);

            Console.WriteLine("Parsing tokens into AST...");
            sw.Restart();
            Ast = AstParser.Parse(ts);
            sw.Stop();
            Console.WriteLine("Parsed to AST in {0}ms", sw.ElapsedMilliseconds);
            SemanticAnalyzer.Analyze(Ast);
            TypeChecker.Check(Ast);
            _program.AppendAst(Ast);
            return(_program.CompileToC());
        }