public static string Compile(string input) { input = input.Replace("\r", ""); ANTLRStringStream Input = new ANTLRStringStream(input); SugarCppLexer lexer = new SugarCppLexer(Input); CommonTokenStream tokens = new CommonTokenStream(lexer); SugarCppParser parser = new SugarCppParser(tokens); AstParserRuleReturnScope <CommonTree, IToken> t = parser.root(); CommonTree ct = (CommonTree)t.Tree; if (parser.errors.Count() > 0) { StringBuilder sb = new StringBuilder(); foreach (var error in parser.errors) { sb.Append(error); sb.Append("\n"); } throw new Exception(sb.ToString()); } CommonTreeNodeStream nodes = new CommonTreeNodeStream(ct); SugarWalker walker = new SugarWalker(nodes); Root ast = walker.root(); TargetCpp target_cpp = new TargetCpp(); return(ast.Accept(target_cpp).Render()); }
private void Source_TextChanged_1(object sender, EventArgs e) { string input = this.Source.Text; File.WriteAllText("test.sc", input); try { TargetCpp sugar_cpp = new TargetCpp(); var result = SugarCompiler.Compile(input, "test"); this.Header.Text = result.Header; File.WriteAllText("test.h", this.Header.Text); this.Implementation.Text = result.Implementation; File.WriteAllText("test.cpp", this.Implementation.Text); } catch (Exception ex) { string output = string.Format("Compile Error:\n{0}", ex.Message); this.Header.Text = output; } }