private void btnGenerate_Click(object sender, EventArgs e) { foreach (var fileName in VB6Compiler.GetFiles(Folder)) { var compileResult = VB6Compiler.Compile(fileName, null, false); var tree = new VB6NodeTree(compileResult); ASTPatternGenerator.GetCode(tree); } }
private void treVB6AST_AfterSelect(object sender, TreeViewEventArgs e) { var node = (ParseTree)treVB6AST.SelectedNode.Tag; txtDebug.Text = translator.Dump(node) + "\r\n"; txtDebug.Text += GetTokens(node) + "\r\n"; var apg = new ASTPatternGenerator((ParseTree)treVB6AST.Nodes[0].Tag); var asiList = ASTSequenceItem.Create(apg, node); txtDebug.Text += ASTSequenceItem.ToString(asiList) + "\r\n"; }
public static List <ASTSequenceItem> Create(ASTPatternGenerator apg, ParseTree rootNode) { if (apg == null) { throw new ArgumentNullException(nameof(apg)); } VB6NodeTree nodeTree = new VB6NodeTree(rootNode); List <ASTSequenceItem> returnedList = new List <ASTSequenceItem> { }; foreach (var node in nodeTree.GetAllNodes()) { var subtree = new VB6SubTree(nodeTree, node); int depth = 0; string childIndices = ""; string typePath = ""; var paths = nodeTree.GetPath(node).ToList(); if (paths.Count == 0) { continue; } foreach (IndexedPath path in paths) { childIndices += path.ChildIndex + "/"; typePath += path.NodeTypeName + "/"; depth++; } var asi = new ASTSequenceItem { setpos = returnedList.Count, depth = depth, childPath = childIndices, token = paths.Last().Token, typeName = paths.First().NodeTypeName, pattern = apg.Lookup(subtree), node = node }; returnedList.Add(asi); } return(returnedList); }