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