public void ParseExpressionPattern(string expression) { var listener = new ErrorListener <IToken>(); var stream = CharStreams.fromstring(expression); ITokenSource lexer = new SpecLexer(stream); ITokenStream tokens = new CommonTokenStream(lexer); var parser = new SpecParserParser(tokens); parser.BuildParseTree = true; parser.AddErrorListener(listener); var spec_ast = parser.pattern(); if (listener.had_error) { Console.WriteLine(spec_ast.GetText()); throw new Exception(); } var template = new Template(); _current_template = template; template.TemplateName = "Grep"; _program._templates.Add(template); _current_pass = new Pass(); _current_pass.Name = "Grep"; _current_pass.Owner = _current_template; _current_template.Passes.Add(_current_pass); _program._application.OrderedPasses.Add("Grep.Grep"); ParseTreeWalker.Default.Walk(this, spec_ast); }
public void ParseSpecFile(string specification_file_name) { var listener = new ErrorListener <IToken>(); // Try current location, or template directory. var location = specification_file_name; if (!File.Exists(location)) { location = Piggy._template_directory + "\\" + specification_file_name; if (!File.Exists(location)) { Console.WriteLine("File " + specification_file_name + " does not exist."); throw new Exception(); } } var stream = CharStreams.fromPath(location); ITokenSource lexer = new SpecLexer(stream); ITokenStream tokens = new CommonTokenStream(lexer); var parser = new SpecParserParser(tokens); parser.BuildParseTree = true; parser.AddErrorListener(listener); var spec_ast = parser.spec(); if (listener.had_error) { Console.WriteLine(spec_ast.GetText()); throw new Exception(); } ParseTreeWalker.Default.Walk(this, spec_ast); }
// 2.2) public static void test22() { System.Console.WriteLine("Work SpecLexer:"); string[] testInput = { "a1", "aa12c23dd1", "aa1", "1a", "aa111", "aaa1", "", "as12ag231s12dd" }; Lexer L; for (int i = 0; i < testInput.Length; ++i) { L = new SpecLexer(testInput[i]); try{ L.Parse(); } catch (LexerException e) { System.Console.WriteLine(e.Message); } } }