001    /* This file was generated with JastAdd2 (http://jastadd.org) version R20130213 */
002    package AST;
003    
004    import java.util.HashSet;
005    import java.io.File;
006    import java.util.*;
007    import beaver.*;
008    import java.util.ArrayList;
009    import java.util.zip.*;
010    import java.io.*;
011    import java.io.FileNotFoundException;
012    import java.util.Collection;
013    /**
014     * @production PackageAccess : {@link Access} ::= <span class="component">&lt;Package:String&gt;</span>;
015     * @ast node
016     * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/java.ast:29
017     */
018    public class PackageAccess extends Access implements Cloneable {
019      /**
020       * @apilevel low-level
021       */
022      public void flushCache() {
023      }
024      /**
025       * @apilevel internal
026       */
027      public void flushCollectionCache() {
028      }
029      /**
030       * @apilevel internal
031       */
032      @SuppressWarnings({"unchecked", "cast"})
033      public PackageAccess clone() throws CloneNotSupportedException {
034        PackageAccess node = (PackageAccess)super.clone();
035        node.in$Circle(false);
036        node.is$Final(false);
037        return node;
038      }
039    /**
040     * @apilevel internal
041     */
042      @SuppressWarnings({"unchecked", "cast"})
043    public PackageAccess copy() {
044      
045      try {
046        PackageAccess node = (PackageAccess) clone();
047        node.parent = null;
048        if(children != null)
049          node.children = (ASTNode[]) children.clone();
050        
051        return node;
052      } catch (CloneNotSupportedException e) {
053        throw new Error("Error: clone not supported for " + getClass().getName());
054      }
055      
056    }/**
057     * Create a deep copy of the AST subtree at this node.
058     * The copy is dangling, i.e. has no parent.
059     * @return dangling copy of the subtree at this node
060     * @apilevel low-level
061     */
062      @SuppressWarnings({"unchecked", "cast"})
063    public PackageAccess fullCopy() {
064      
065      PackageAccess tree = (PackageAccess) copy();
066      if (children != null) {
067        for (int i = 0; i < children.length; ++i) {
068          
069          ASTNode child = (ASTNode) children[i];
070          if(child != null) {
071            child = child.fullCopy();
072            tree.setChild(child, i);
073          }
074        }
075      }
076      return tree;
077      
078    }  /**
079       * @ast method 
080       * @aspect NameCheck
081       * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/NameCheck.jrag:50
082       */
083      public void nameCheck() {
084        if(!hasPackage(packageName())) {
085          error(packageName() + " not found");
086        }
087      }
088      /**
089       * @ast method 
090       * @aspect NodeConstructors
091       * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/NodeConstructors.jrag:18
092       */
093      public PackageAccess(String name, int start, int end) {
094        this(name);
095        this.start = this.Packagestart = start;
096        this.end = this.Packageend = end;
097      }
098      /**
099       * @ast method 
100       * @aspect PrettyPrint
101       * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/PrettyPrint.jadd:510
102       */
103      public void toString(StringBuffer s) {
104        s.append(getPackage());
105      }
106      /**
107       * @ast method 
108       * 
109       */
110      public PackageAccess() {
111        super();
112    
113    
114      }
115      /**
116       * Initializes the child array to the correct size.
117       * Initializes List and Opt nta children.
118       * @apilevel internal
119       * @ast method
120       * @ast method 
121       * 
122       */
123      public void init$Children() {
124      }
125      /**
126       * @ast method 
127       * 
128       */
129      public PackageAccess(String p0) {
130        setPackage(p0);
131      }
132      /**
133       * @ast method 
134       * 
135       */
136      public PackageAccess(beaver.Symbol p0) {
137        setPackage(p0);
138      }
139      /**
140       * @apilevel low-level
141       * @ast method 
142       * 
143       */
144      protected int numChildren() {
145        return 0;
146      }
147      /**
148       * @apilevel internal
149       * @ast method 
150       * 
151       */
152      public boolean mayHaveRewrite() {
153        return false;
154      }
155      /**
156       * Replaces the lexeme Package.
157       * @param value The new value for the lexeme Package.
158       * @apilevel high-level
159       * @ast method 
160       * 
161       */
162      public void setPackage(String value) {
163        tokenString_Package = value;
164      }
165      /**
166       * @apilevel internal
167       * @ast method 
168       * 
169       */
170      
171      /**
172       * @apilevel internal
173       */
174      protected String tokenString_Package;
175      /**
176       * @ast method 
177       * 
178       */
179      
180      public int Packagestart;
181      /**
182       * @ast method 
183       * 
184       */
185      
186      public int Packageend;
187      /**
188       * JastAdd-internal setter for lexeme Package using the Beaver parser.
189       * @apilevel internal
190       * @ast method 
191       * 
192       */
193      public void setPackage(beaver.Symbol symbol) {
194        if(symbol.value != null && !(symbol.value instanceof String))
195          throw new UnsupportedOperationException("setPackage is only valid for String lexemes");
196        tokenString_Package = (String)symbol.value;
197        Packagestart = symbol.getStart();
198        Packageend = symbol.getEnd();
199      }
200      /**
201       * Retrieves the value for the lexeme Package.
202       * @return The value for the lexeme Package.
203       * @apilevel high-level
204       * @ast method 
205       * 
206       */
207      public String getPackage() {
208        return tokenString_Package != null ? tokenString_Package : "";
209      }
210      /**
211       * @attribute syn
212       * @aspect LookupFullyQualifiedTypes
213       * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/LookupType.jrag:83
214       */
215      public boolean hasQualifiedPackage(String packageName) {
216        ASTNode$State state = state();
217        try {  return hasPackage(packageName() + "." + packageName);  }
218        finally {
219        }
220      }
221      /**
222       * @attribute syn
223       * @aspect TypeScopePropagation
224       * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/LookupType.jrag:430
225       */
226      public SimpleSet qualifiedLookupType(String name) {
227        ASTNode$State state = state();
228        try {
229        SimpleSet c = SimpleSet.emptySet;
230        TypeDecl typeDecl = lookupType(packageName(), name);
231        if(nextAccess() instanceof ClassInstanceExpr) {
232          if(typeDecl != null && typeDecl.accessibleFrom(hostType()))
233            c = c.add(typeDecl);
234          return c;
235        }
236        else {
237          if(typeDecl != null) {
238            if(hostType() != null && typeDecl.accessibleFrom(hostType()))
239              c = c.add(typeDecl);
240            else if(hostType() == null && typeDecl.accessibleFromPackage(hostPackage()))
241              c = c.add(typeDecl);
242          }
243          return c;
244        }
245      }
246        finally {
247        }
248      }
249      /**
250       * @attribute syn
251       * @aspect VariableScope
252       * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/LookupVariable.jrag:148
253       */
254      public SimpleSet qualifiedLookupVariable(String name) {
255        ASTNode$State state = state();
256        try {  return SimpleSet.emptySet;  }
257        finally {
258        }
259      }
260      /**
261       * @attribute syn
262       * @aspect PrettyPrint
263       * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/PrettyPrint.jadd:800
264       */
265      public String dumpString() {
266        ASTNode$State state = state();
267        try {  return getClass().getName() + " [" + getPackage() + "]";  }
268        finally {
269        }
270      }
271      /**
272       * @attribute syn
273       * @aspect Names
274       * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/QualifiedNames.jrag:23
275       */
276      public String name() {
277        ASTNode$State state = state();
278        try {  return getPackage();  }
279        finally {
280        }
281      }
282      /**
283       * @attribute syn
284       * @aspect Names
285       * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/QualifiedNames.jrag:25
286       */
287      public String packageName() {
288        ASTNode$State state = state();
289        try {
290        StringBuffer s = new StringBuffer();
291        if(hasPrevExpr()) {
292          s.append(prevExpr().packageName());
293          s.append(".");
294        }
295        s.append(getPackage());
296        return s.toString();
297      }
298        finally {
299        }
300      }
301      /**
302       * @attribute syn
303       * @aspect AccessTypes
304       * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/ResolveAmbiguousNames.jrag:37
305       */
306      public boolean isPackageAccess() {
307        ASTNode$State state = state();
308        try {  return true;  }
309        finally {
310        }
311      }
312      /**
313       * @attribute syn
314       * @aspect SyntacticClassification
315       * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/SyntacticClassification.jrag:56
316       */
317      public NameType predNameType() {
318        ASTNode$State state = state();
319        try {  return NameType.PACKAGE_NAME;  }
320        finally {
321        }
322      }
323      /**
324       * @attribute syn
325       * @aspect TypeHierarchyCheck
326       * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/TypeHierarchyCheck.jrag:20
327       */
328      public boolean isUnknown() {
329        ASTNode$State state = state();
330        try {  return !hasPackage(packageName());  }
331        finally {
332        }
333      }
334      /**
335       * @attribute inh
336       * @aspect NameCheck
337       * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/NameCheck.jrag:243
338       */
339      @SuppressWarnings({"unchecked", "cast"})
340      public boolean hasPackage(String packageName) {
341          ASTNode$State state = state();
342        boolean hasPackage_String_value = getParent().Define_boolean_hasPackage(this, null, packageName);
343            return hasPackage_String_value;
344      }
345      /**
346       * @apilevel internal
347       */
348      public ASTNode rewriteTo() {
349        return super.rewriteTo();
350      }
351    }