public override void CaseANamespaceDecl(ANamespaceDecl node) { string lastNamespace = currentNamespace; currentNamespace += node.GetName().Text + "_"; base.CaseANamespaceDecl(node); currentNamespace = lastNamespace; while (node.GetDecl().Count > 0) { PDecl decl = (PDecl) node.GetDecl()[0]; node.RemoveChild(decl); if (node.Parent() is ANamespaceDecl) { ANamespaceDecl parent = (ANamespaceDecl) node.Parent(); parent.GetDecl().Insert(parent.GetDecl().IndexOf(node), decl); } else { AASourceFile parent = (AASourceFile)node.Parent(); parent.GetDecl().Insert(parent.GetDecl().IndexOf(node), decl); } } node.Parent().RemoveChild(node); }
public override void CaseANamespaceDecl(ANamespaceDecl node) { InANamespaceDecl(node); if (node.GetEndToken() != null) { node.GetEndToken().Apply(this); } { Object[] temp = new Object[node.GetDecl().Count]; node.GetDecl().CopyTo(temp, 0); for (int i = temp.Length - 1; i >= 0; i--) { ((PDecl)temp[i]).Apply(this); } } if (node.GetName() != null) { node.GetName().Apply(this); } if (node.GetToken() != null) { node.GetToken().Apply(this); } OutANamespaceDecl(node); }
public override void CaseATempNamespaceDecl(ATempNamespaceDecl node) { ANamespaceDecl visitMe = null; Node parent = node.Parent(); IList declList; if (parent is ANamespaceDecl) declList = ((ANamespaceDecl) parent).GetDecl(); else declList = ((AASourceFile)parent).GetDecl(); parent.RemoveChild(node); List<TIdentifier> identifiers = new List<TIdentifier>(); foreach (TIdentifier identifier in node.GetName()) { identifiers.Add(identifier); } foreach (TIdentifier identifier in identifiers) { TRBrace endToken = null; if (node.GetEndToken() != null) endToken = new TRBrace("}", node.GetEndToken().Line, node.GetEndToken().Pos); ANamespaceDecl ns = new ANamespaceDecl(new TNamespace("namespace", node.GetToken().Line, node.GetToken().Pos), identifier, new ArrayList(), endToken); if (visitMe == null) visitMe = ns; declList.Add(ns); declList = ns.GetDecl(); } while (node.GetDecl().Count > 0) { declList.Add(node.GetDecl()[0]); } visitMe.Apply(this); }