Exemplo n.º 1
0
 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);
     }
 }
Exemplo n.º 2
0
        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";
        }
Exemplo n.º 3
0
        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);
        }