Example #1
0
        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);
        }
Example #2
0
        // 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));
        }
Example #3
0
        // dump to JSON
        public JObject DumpJSON()
        {
            var obj           = new JObject();
            var serialization = new ASTSerialization.Serialization(TLearner._grammar);
            var serializedAST = serialization.PrintXML(_program);

            // File.WriteAllText("/Users/xrc/Repository/Prem/logs/ast.xml",x);
            // System.Xml.Serialization.XmlSerializer xs = new System.Xml.Serialization.XmlSerializer(typeof(ProgramNode));
            // Stream stream = new MemoryStream();
            // xs.Serialize(stream, _program);
            // var y = xs.Deserialize(stream);
            // var gm = _program.Grammar;
            // var y = ProgramNode.Parse(x, gm,ASTSerializationFormat.XML);
            // var z = System.Xml.Linq.XElement.Parse(x);
            // var y = ProgramNode.ParseXML(TLearner._grammar,z);
            obj.Add("program", serializedAST.ToString());
            obj.Add("score", score);
            return(obj);
        }
Example #4
0
        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);
        }