public void Test()
        {
            var originalGrammar = new Grammar();
            var red   = originalGrammar.Symbols.Add("red");
            var green = originalGrammar.Symbols.Add("green", SymbolCategory.ExplicitlyUsed);
            var blue  = originalGrammar.Symbols.Add("blue");
            originalGrammar.Productions.Define(red,  new[] { green, blue });
            originalGrammar.Productions.Define(blue, new[] { red, green });
            originalGrammar.Productions.Define(blue, new Symbol[0]);

            originalGrammar.Start = red;

            GrammarSerializer target = new GrammarSerializer(originalGrammar);
            var factory = new CachedMethod<Func<Grammar>>("GrammarSerializerTest.Assembly0", (emit, args) => { target.Build(emit); return emit.Ret(); }).Delegate;

            var recreated = factory();

            Assert.IsTrue(GrammarEquals(originalGrammar, recreated));
        }
Example #2
0
        public void Test()
        {
            var originalGrammar = new Grammar();
            var red             = originalGrammar.Symbols.Add("red");
            var green           = originalGrammar.Symbols.Add("green", SymbolCategory.ExplicitlyUsed);
            var blue            = originalGrammar.Symbols.Add("blue");

            originalGrammar.Productions.Define(red, new[] { green, blue });
            originalGrammar.Productions.Define(blue, new[] { red, green });
            originalGrammar.Productions.Define(blue, new Symbol[0]);

            originalGrammar.Start = red;

            GrammarSerializer target = new GrammarSerializer(originalGrammar);
            var factory = new CachedMethod <Func <Grammar> >("GrammarSerializerTest.Assembly0", (emit, args) => { target.Build(emit); return(emit.Ret()); }).Delegate;

            var recreated = factory();

            Assert.IsTrue(GrammarEquals(originalGrammar, recreated));
        }