import Jakarta.util.FixDosOutputStream; import Jakarta.util.Util; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.io.OutputStream; import java.io.PrintWriter; import java.io.Reader; import java.util.ArrayList; import java.util.Iterator; import java.util.List; import java.util.HashSet; public class AST_QualifiedName { // the following routines are used for converting strings (or string // arrays) into AST_QualifiedName trees. If an array of strings is // given as an argument (id[0]="x"; id[1]="y"; id[2]="z"), what is // returned is id{x.y.z}id public static AST_QualifiedName Make( String id ) { AST_QualifiedName a = new AST_QualifiedName(); AstToken dot = new AstToken().setParms( "",".",0 ); NameId nid = new NameId().setParms( new AstToken().setParms( " ",id,0 ) ); a.add( new AST_QualifiedNameElem().setParms( dot, nid ) ); return ( a ); } public static AST_QualifiedName Make( String[] id ) { AST_QualifiedName a = new AST_QualifiedName(); AstToken dot; NameId nid; int i; for ( i = 0; i<id.length; i++ ) { dot = new AstToken().setParms( "",".",0 ); nid = new NameId().setParms( new AstToken().setParms( " ",id[i],0 ) ); a.add( new AST_QualifiedNameElem().setParms( dot, nid ) ); } return ( a ); } public String GetName() { AstCursor c = new AstCursor(); String name = null; for ( c.First( this ); c.More(); c.PlusPlus() ) { if ( c.node instanceof NameId ) { if ( name != null ) name = name + "." + c.node.tok[0].tokenName(); else name = c.node.tok[0].tokenName(); } } return name; } // gets first QName of AST_QualifiedName public String getPrefixName() { String name = GetName(); int i = name.indexOf("."); if (i>=0) name = name.substring(0,i); return name; } // sets first QName of AST_QualifiedName public void setPrefixName( String n ) { AstCursor c = new AstCursor(); for ( c.FirstElement( this ); c.MoreElement(); c.NextElement() ) if (c.node instanceof NameId) { c.node.tok[0].setTokenName( n ); return; } else if (c.node instanceof AST_QualifiedName) ((AST_QualifiedName) c.node).setPrefixName(n); else AstNode.fatalError("first name of layer decl is not an Identifier"); } }