public void PdlGrammarGeneratorShouldCreateGrammarForComplexDefinition()
        {
            var ebnf =
                @"file = ws directives ws ;
                ws = [ ows ] ; /* white space */
                ows = ""_""; /* obligatory white space */
                directives = directive { ows directive };
                directive = ""0"" | ""1""; ";

            var parser           = new PdlParser();
            var ebnfDefinition   = parser.Parse(ebnf);
            var generatedGrammar = GenerateGrammar(ebnfDefinition);

            Assert.IsNotNull(generatedGrammar);
            var parseEngine = new ParseEngine(generatedGrammar, new ParseEngineOptions(optimizeRightRecursion: true));
            var parseTester = new ParseTester(parseEngine);

            parseTester.RunParse("_0_1_0_0_1_1_");
        }
        public void TestProtcolBuffersV3Grammar()
        {
            var testDirectory = Directory.GetCurrentDirectory();
            var ebnfPath      = Path.Combine(testDirectory, "Runtime", GrammarFile);
            var ebnf          = File.ReadAllText(ebnfPath);
            var ebnfGenerator = new PdlGrammarGenerator();
            var ebnfParser    = new PdlParser();
            var ebnfDefintion = ebnfParser.Parse(ebnf);

            var parseEngine = new ParseEngine(ebnfGenerator.Generate(ebnfDefintion));

            var inputPath   = Path.Combine(testDirectory, "Runtime", ProtoFile);
            var input       = File.ReadAllText(inputPath);
            var parseRunner = new ParseRunner(parseEngine, input);

            while (!parseRunner.EndOfStream())
            {
                Assert.IsTrue(parseRunner.Read());
            }
            Assert.IsTrue(parseRunner.ParseEngine.IsAccepted());
        }
Exemplo n.º 3
0
        private static PdlDefinition Parse(string input)
        {
            var pdlParser = new PdlParser();

            return(pdlParser.Parse(input));
        }