コード例 #1
0
        public static HashSet <string> NamesToRename(procedure_definition pd)
        {
            var v = new CollectNamesInIsVarVisitor();

            v.ProcessNode(pd);
            return(v.NamesInIsVars);
        }
コード例 #2
0
        public override void visit(procedure_definition pd)               // три вида ПИ, которые надо учитывать
        {
            NamesToRename = CollectNamesInIsVarVisitor.NamesToRename(pd); // Это - акцент внимания
            if (NamesToRename.Count == 0)
            {
                return; // nothing top do
            }
            PushNamespace(pd);

            if (pd.proc_header.parameters != null)
            {
                var allnames = pd.proc_header.parameters.params_list.SelectMany(tp => tp.idents.idents);
                foreach (var name in allnames)
                {
                    AddNameNewName(name, null); // null означает, что переименовывать не надо
                }
            }

            base.visit(pd);
            PopNamespace();
            NamesToRename = null;
        }