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