Ejemplo n.º 1
0
        private INode Parse(string expression)
        {
            var lexer   = new Lexer(new StringReader(expression));
            var grammar = new PegGrammar();
            var parser  = new Parser <INode>(grammar);

            return(parser.Parse(new TokenStream(lexer).Start()));
        }
Ejemplo n.º 2
0
        public void TestGrammar()
        {
            var grammar = new PegGrammar();

            Assert.AreEqual("'a'*", grammar.ParseExpression("'a'*").ToString());

            Assert.AreEqual("[a-z]", grammar.ParseExpression("[\\141-\\172]").ToString());
            //Assert.AreEqual("('a' / 'b' / 'c') / e", grammar.ParseExpression("('a' / 'b' / 'c')?").ToString());
            //Assert.AreEqual("'c' / ('a'* 'b') / e", grammar.ParseExpression("'c' / ('a'* 'b')?").ToString());
        }
Ejemplo n.º 3
0
        public void TestPegGrammar()
        {
            var grammar = new PegGrammar();

            grammar.EnsureGrammarBuilt();
            var runner = new PatternCompiler(new Compiler(), new DefaultOptimizer(), new ILJitter
            {
                EnableMemoization        = true,
                EnableCaptureMemoization = true,
            }).Compile(grammar.Grammar);
            var result       = runner.Run(StringData);
            var patternNames = runner.GetPatternsTriedAt(StringData.Length).ToList();

            Assert.AreEqual(true, result.IsSuccessful);
            Assert.IsTrue(patternNames.Count > 0);
        }