Exemple #1
0
        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);
        }
Exemple #2
0
        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);
        }
Exemple #3
0
    // 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);
            }
        }
    }