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)); }
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)); }