public void TestLearnSubstringOneExample() { Result <Grammar> grammar = CompileGrammar(); SynthesisEngine prose = ConfigureSynthesis(grammar.Value); State input = State.CreateForExecution(grammar.Value.InputSymbol, "Toby Miller"); var examples = new Dictionary <State, object> { { input, "Miller" } }; var spec = new ExampleSpec(examples); var scoreFeature = new RankingScore(grammar.Value); ProgramSet topPrograms = prose.LearnGrammarTopK(spec, scoreFeature, 1, null); ProgramNode topProgram = topPrograms.RealizedPrograms.First(); var x = topProgram.PrintAST(); var y = ProgramNode.Parse(x, grammar.Value); // var y is null. ==> SDK method var se = new ASTSerialization.Serialization(grammar.Value); var xe = se.PrintXML(topProgram); xe.Save(SavedProgramAST); topProgram = se.Parse(xe); // var topProgram is ok. ==> ASTSerialization.Serialization method var output = topProgram.Invoke(input) as string; Assert.AreEqual("Miller", output); State input2 = State.CreateForExecution(grammar.Value.InputSymbol, "Courtney Lynch"); var output2 = topProgram.Invoke(input2) as string; Assert.AreEqual("Lynch", output2); }
// load from JSON public static TProgram FromJSON(JObject obj) { var src = (string)obj["program"]; var serialization = new ASTSerialization.Serialization(TLearner._grammar); var prog = serialization.Parse(System.Xml.Linq.XElement.Parse(src)); var score = (double)obj["score"]; return(new TProgram(prog, score, TLearner.InputSymbol)); }
public void TestLearnSubstringOneExampleWithASTLoad() { Result <Grammar> grammar = CompileGrammar(); SynthesisEngine prose = ConfigureSynthesis(grammar.Value); State input = State.CreateForExecution(grammar.Value.InputSymbol, "Toby Miller"); var examples = new Dictionary <State, object> { { input, "Miller" } }; var se = new ASTSerialization.Serialization(grammar.Value); var xe = System.Xml.Linq.XElement.Load(new FileStream(SavedProgramAST, FileMode.Open)); var topProgram = se.Parse(xe); // var topProgram is ok. ==> ASTSerialization.Serialization method var output = topProgram.Invoke(input) as string; Assert.AreEqual("Miller", output); State input2 = State.CreateForExecution(grammar.Value.InputSymbol, "Courtney Lynch"); var output2 = topProgram.Invoke(input2) as string; Assert.AreEqual("Lynch", output2); }