public static HashSet <string> NamesToRename(procedure_definition pd) { var v = new CollectNamesInIsVarVisitor(); v.ProcessNode(pd); return(v.NamesInIsVars); }
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; }