Пример #1
0
        public void FindRootMatchAndWriteFragmentTest()
        {
            var outPath    = Path.Combine(Directory.GetCurrentDirectory(), "TestFiles\\TestOutputFile.txt");
            var toCSWriter = new ToCSWriter(outPath);

            var path     = Path.Combine(Directory.GetCurrentDirectory(), "TestFiles\\TestFile.cs");
            var fileInfo = new FileInfo(path);
            var tree     = CSTreeCreator.CreateTree(fileInfo, null);

            toCSWriter.Initialize(null, new LabeledTree[] { tree });

            var method1 = FindMethod1(tree.Root);

            Assert.IsNotNull(method1);

            var containingElement = method1.Parent.Parent;
            var leaves            = toCSWriter.RetrieveFragmentLeaves(containingElement as CSNode);

            Assert.True(leaves.Count > 0);

            var anyLeavesToWrite    = leaves.Any(l => l.CouldBeWritten);
            var anyLeavesWithAMatch = leaves.Any(l => l.IsExistingRoslynNode && l.UseRoslynMatchToWrite);

            Assert.True(anyLeavesToWrite);
            Assert.True(anyLeavesWithAMatch);

            toCSWriter.FindRootMatchAndWriteFragment(containingElement as CSNode, leaves);
            // Take a look at TestFiles\TestOutputFile.txt to see the result.
        }
Пример #2
0
        static void Main(string[] args)
        {
            Config config = TryExtractConfig(args);

            if (config == null)
            {
                return;
            }

            var saveModel = !string.IsNullOrEmpty(config.Paths.OutModel);

            // Create Labeled Trees
            // Perform Needed transformations
            var labeledTrees = CreateLabeledTrees(config.Paths.InData, config.Paths.OutModel);

            // Calculate and save PCFG to file
            var pCFGComposer = new LabeledTreePCFGComposer(labeledTrees.ToList(), config);

            pCFGComposer.CalculateProbabilities();


            ToCSWriter writer = new ToCSWriter(config.Paths.OutIdioms);

            var sampler = new TBSampler(writer, config);

            sampler.Initialize(pCFGComposer, labeledTrees);
            sampler.Train();

            if (saveModel)
            {
                foreach (var tree in sampler.Trees)
                {
                    tree.Serialize();
                }
            }
            Console.ReadKey();
        }