public static IEnumerable <ClassInfo> OuterClassInfosFromSource(string source, string filePath) { try { char[] codeArray = source.ToCharArray(); AntlrInputStream inputStream = new AntlrInputStream(codeArray, codeArray.Length); JavaLexer lexer = new JavaLexer(inputStream); CommonTokenStream commonTokenStream = new CommonTokenStream(lexer); JavaParser parser = new JavaParser(commonTokenStream); parser.RemoveErrorListeners(); parser.AddErrorListener(new ErrorListener()); // add ours // a compilation unit is the highest level container -> start there // do not call parser.compilationUnit() more than once CompilationUnitListener compilationUnitListener = new CompilationUnitListener(filePath); parser.compilationUnit().EnterRule(compilationUnitListener); return(compilationUnitListener.OuterClassInfos); } catch (Exception e) { Console.WriteLine(e); } return(new List <ClassInfo>()); }
static void Main(string[] args) { int i = 0; bool build_tree = true; for (; i < args.Length; ++i) { switch (args[i]) { case "-notree": build_tree = false; break; } } var input = File.OpenText(args[i - 1]); var str = new AntlrInputStream(input); var lexer = new JavaLexer(str); var tokens = new CommonTokenStream(lexer); var parser = new JavaParser(tokens); var listener = new ErrorListener <IToken>(parser, lexer, tokens); parser.AddErrorListener(listener); parser.BuildParseTree = build_tree; var start = DateTime.Now; var tree = parser.compilationUnit(); if (listener.had_error) { System.Console.WriteLine("error in parse."); } else { System.Console.WriteLine("parse completed."); } var end = DateTime.Now; System.Console.WriteLine(tokens.OutputTokens()); if (tree != null) { System.Console.WriteLine(tree.OutputTree(tokens)); } System.Console.WriteLine(end - start); }
static void Main(string[] args) { List <string> options = new List <string>(); List <string> arguments = new List <string>(); string ast_output_file = null; CommandLine.Parser.Default.ParseArguments <Options>(args) .WithParsed <Options>(o => { arguments = o.JavaFiles.ToList(); ast_output_file = o.AstOutFile; }) .WithNotParsed(a => { System.Console.Error.WriteLine(a); }); Runtime.Redirect r = new Runtime.Redirect(ast_output_file); foreach (var file_name in arguments) { var code_as_string = File.ReadAllText(file_name); var input = new AntlrInputStream(code_as_string); var lexer = new JavaLexer(input); var tokens = new CommonTokenStream(lexer); var parser = new JavaParser(tokens); var listener = new ErrorListener <IToken>(); parser.AddErrorListener(listener); JavaParser.CompilationUnitContext tree = parser.compilationUnit(); if (listener.had_error) { return; } var sb = new StringBuilder(); var ser = new Runtime.AstHelpers(); ser.ParenthesizedAST(sb, file_name, tree, tokens); System.Console.WriteLine(sb.ToString()); } r.Dispose(); }
public static void Main(String[] args) { bool print_tree = false; bool perf = false; bool print_tokens = false; int file_index = 0; if (args.Length == 0) { System.Console.WriteLine("Antlr Java parser."); return; } else { for (int i = 0; i < args.Length; ++i) { if (args[i] == "-t") { print_tree = true; } else if (args[i] == "-p") { perf = true; } else if (args[i] == "-i") { print_tokens = true; } else { file_index = i; } } } int exceptions = 0; var errorListener = new ErrorListener <IToken>(); IParseTree tree = null; CommonTokenStream tokens = null; var start = DateTime.Now; try { var input = File.OpenText(args[file_index]); var str = new AntlrInputStream(input); JavaLexer lexer = new JavaLexer(str); tokens = new CommonTokenStream(lexer); var parser = new JavaParser(tokens); parser.RemoveErrorListeners(); parser.AddErrorListener(errorListener); tree = parser.compilationUnit(); } catch (Exception e) { exceptions++; } System.Console.WriteLine("errors " + errorListener.num_errors + " exceptions " + exceptions); var end = DateTime.Now; if (perf) { System.Console.WriteLine(end - start); } if (print_tokens && tokens != null) { foreach (var token in tokens.GetTokens()) { System.Console.WriteLine("Token " + token.TokenIndex + " " + token.Type + " " + Output.PerformEscapes(token.Text)); } } if (print_tree && tree != null) { System.Console.WriteLine(tree.OutputTree(tokens)); } }