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()); }