static void Try(string input) { var str = new AntlrInputStream(input); System.Console.WriteLine(input); var lexer = new ArithmeticLexer(str); var tokens = new CommonTokenStream(lexer); var parser = new ArithmeticParser(tokens); var listener_lexer = new ErrorListener <int>(); var listener_parser = new ErrorListener <IToken>(); lexer.AddErrorListener(listener_lexer); parser.AddErrorListener(listener_parser); var tree = parser.file(); if (listener_lexer.had_error || listener_parser.had_error) { System.Console.WriteLine("error in parse."); } else { System.Console.WriteLine("parse completed."); } }
static Antlr4.Runtime.Tree.IParseTree DoParse(string input) { bool show_tree = false; bool show_tokens = false; bool old = false; bool two_byte = false; string file_name = null; System.Text.Encoding encoding = null; ICharStream str = null; if (input == null && file_name == null) { str = CharStreams.fromStream(System.Console.OpenStandardInput()); } else if (input != null) { str = CharStreams.fromString(input); } else if (file_name != null) { if (two_byte) { str = new TwoByteCharStream(file_name); } else if (old) { FileStream fs = new FileStream(file_name, FileMode.Open); str = new Antlr4.Runtime.AntlrInputStream(fs); } else if (encoding == null) { str = CharStreams.fromPath(file_name); } else { str = CharStreams.fromPath(file_name, encoding); } } var lexer = new ArithmeticLexer(str); if (show_tokens) { StringBuilder new_s = new StringBuilder(); for (int i = 0; ; ++i) { var ro_token = lexer.NextToken(); var token = (CommonToken)ro_token; token.TokenIndex = i; new_s.AppendLine(token.ToString()); if (token.Type == Antlr4.Runtime.TokenConstants.EOF) { break; } } System.Console.Error.WriteLine(new_s.ToString()); lexer.Reset(); } var tokens = new CommonTokenStream(lexer); var parser = new ArithmeticParser(tokens); var listener_lexer = new ErrorListener <int>(); var listener_parser = new ErrorListener <IToken>(); lexer.AddErrorListener(listener_lexer); parser.AddErrorListener(listener_parser); DateTime before = DateTime.Now; ArithmeticParser.File_Context tree = parser.file_(); DateTime after = DateTime.Now; System.Console.Error.WriteLine("Time: " + (after - before)); if (listener_lexer.had_error || listener_parser.had_error) { System.Console.Error.WriteLine("Parse failed."); } else { System.Console.Error.WriteLine("Parse succeeded."); } if (show_tree) { System.Console.Error.WriteLine(tree.ToStringTree(parser)); } System.Environment.Exit(listener_lexer.had_error || listener_parser.had_error ? 1 : 0); return(tree); }
static void Main(string[] args) { bool show_tree = false; bool show_tokens = false; string file_name = null; string input = null; for (int i = 0; i < args.Length; ++i) { if (args[i].Equals("-tokens")) { show_tokens = true; continue; } else if (args[i].Equals("-tree")) { show_tree = true; continue; } else if (args[i].Equals("-input")) { input = args[++i]; } else if (args[i].Equals("-file")) { file_name = args[++i]; } } ICharStream str = null; if (input == null && file_name == null) { StringBuilder sb = new StringBuilder(); int ch; while ((ch = System.Console.Read()) != -1) { sb.Append((char)ch); } input = sb.ToString(); str = CharStreams.fromString(input); } else if (input != null) { str = CharStreams.fromString(input); } else if (file_name != null) { str = CharStreams.fromPath(file_name); } var lexer = new ArithmeticLexer(str); if (show_tokens) { StringBuilder new_s = new StringBuilder(); for (int i = 0; ; ++i) { var ro_token = lexer.NextToken(); var token = (CommonToken)ro_token; token.TokenIndex = i; new_s.AppendLine(token.ToString()); if (token.Type == Antlr4.Runtime.TokenConstants.EOF) { break; } } System.Console.Error.WriteLine(new_s.ToString()); lexer.Reset(); } var tokens = new CommonTokenStream(lexer); var parser = new ArithmeticParser(tokens); var listener_lexer = new ErrorListener <int>(); var listener_parser = new ErrorListener <IToken>(); lexer.AddErrorListener(listener_lexer); parser.AddErrorListener(listener_parser); var tree = parser.file(); if (listener_lexer.had_error || listener_parser.had_error) { System.Console.Error.WriteLine("parse failed."); } else { System.Console.Error.WriteLine("parse succeeded."); } if (show_tree) { System.Console.Error.WriteLine(tree.ToStringTree(parser)); } System.Environment.Exit(listener_lexer.had_error || listener_parser.had_error ? 1 : 0); }