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()); }
private static PdlDefinition Parse(string input) { var pdlParser = new PdlParser(); return(pdlParser.Parse(input)); }