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 ArrayTypeAccess : {@link TypeAccess} ::= <span class="component"><Package:String></span> <span class="component"><ID:String></span> <span class="component">{@link Access}</span>; 015 * @ast node 016 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/java.ast:25 017 */ 018 public class ArrayTypeAccess extends TypeAccess 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 ArrayTypeAccess clone() throws CloneNotSupportedException { 034 ArrayTypeAccess node = (ArrayTypeAccess)super.clone(); 035 node.getPackage_computed = false; 036 node.getPackage_value = null; 037 node.getID_computed = false; 038 node.getID_value = null; 039 node.decl_computed = false; 040 node.decl_value = null; 041 node.in$Circle(false); 042 node.is$Final(false); 043 return node; 044 } 045 /** 046 * @apilevel internal 047 */ 048 @SuppressWarnings({"unchecked", "cast"}) 049 public ArrayTypeAccess copy() { 050 051 try { 052 ArrayTypeAccess node = (ArrayTypeAccess) clone(); 053 node.parent = null; 054 if(children != null) 055 node.children = (ASTNode[]) children.clone(); 056 057 return node; 058 } catch (CloneNotSupportedException e) { 059 throw new Error("Error: clone not supported for " + getClass().getName()); 060 } 061 062 }/** 063 * Create a deep copy of the AST subtree at this node. 064 * The copy is dangling, i.e. has no parent. 065 * @return dangling copy of the subtree at this node 066 * @apilevel low-level 067 */ 068 @SuppressWarnings({"unchecked", "cast"}) 069 public ArrayTypeAccess fullCopy() { 070 071 ArrayTypeAccess tree = (ArrayTypeAccess) copy(); 072 if (children != null) { 073 for (int i = 0; i < children.length; ++i) { 074 075 ASTNode child = (ASTNode) children[i]; 076 if(child != null) { 077 child = child.fullCopy(); 078 tree.setChild(child, i); 079 } 080 } 081 } 082 return tree; 083 084 } /** 085 * @ast method 086 * @aspect NameCheck 087 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/NameCheck.jrag:155 088 */ 089 public void nameCheck() { 090 if(decl().elementType().isUnknown()) 091 error("no type named " + decl().elementType().typeName()); 092 } 093 /** 094 * @ast method 095 * @aspect PrettyPrint 096 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/PrettyPrint.jadd:490 097 */ 098 public void toString(StringBuffer s) { 099 getAccess().toString(s); 100 s.append("[]"); 101 } 102 /** 103 * @ast method 104 * @aspect CreateBCode 105 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Backend/CreateBCode.jrag:812 106 */ 107 public void createBCode(CodeGeneration gen) { 108 getAccess().createBCode(gen); 109 } 110 /** 111 * @ast method 112 * 113 */ 114 public ArrayTypeAccess() { 115 super(); 116 117 118 } 119 /** 120 * Initializes the child array to the correct size. 121 * Initializes List and Opt nta children. 122 * @apilevel internal 123 * @ast method 124 * @ast method 125 * 126 */ 127 public void init$Children() { 128 children = new ASTNode[1]; 129 } 130 /** 131 * @ast method 132 * 133 */ 134 public ArrayTypeAccess(Access p0) { 135 setChild(p0, 0); 136 } 137 /** 138 * @apilevel low-level 139 * @ast method 140 * 141 */ 142 protected int numChildren() { 143 return 1; 144 } 145 /** 146 * @apilevel internal 147 * @ast method 148 * 149 */ 150 public boolean mayHaveRewrite() { 151 return false; 152 } 153 /** 154 * Replaces the Access child. 155 * @param node The new node to replace the Access child. 156 * @apilevel high-level 157 * @ast method 158 * 159 */ 160 public void setAccess(Access node) { 161 setChild(node, 0); 162 } 163 /** 164 * Retrieves the Access child. 165 * @return The current node used as the Access child. 166 * @apilevel high-level 167 * @ast method 168 * 169 */ 170 public Access getAccess() { 171 return (Access)getChild(0); 172 } 173 /** 174 * Retrieves the Access child. 175 * <p><em>This method does not invoke AST transformations.</em></p> 176 * @return The current node used as the Access child. 177 * @apilevel low-level 178 * @ast method 179 * 180 */ 181 public Access getAccessNoTransform() { 182 return (Access)getChildNoTransform(0); 183 } 184 /** 185 * Replaces the lexeme Package. 186 * @param value The new value for the lexeme Package. 187 * @apilevel high-level 188 * @ast method 189 * 190 */ 191 public void setPackage(String value) { 192 tokenString_Package = value; 193 } 194 /** 195 * @apilevel internal 196 * @ast method 197 * 198 */ 199 200 /** 201 * @apilevel internal 202 */ 203 protected String tokenString_Package; 204 /** 205 * Replaces the lexeme ID. 206 * @param value The new value for the lexeme ID. 207 * @apilevel high-level 208 * @ast method 209 * 210 */ 211 public void setID(String value) { 212 tokenString_ID = value; 213 } 214 /** 215 * @apilevel internal 216 * @ast method 217 * 218 */ 219 220 /** 221 * @apilevel internal 222 */ 223 protected String tokenString_ID; 224 /** 225 * @apilevel internal 226 */ 227 protected boolean getPackage_computed = false; 228 /** 229 * @apilevel internal 230 */ 231 protected String getPackage_value; 232 /** 233 * @attribute syn nta 234 * @aspect Arrays 235 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/Arrays.jrag:56 236 */ 237 @SuppressWarnings({"unchecked", "cast"}) 238 public String getPackage() { 239 if(getPackage_computed) { 240 return getPackage_value; 241 } 242 ASTNode$State state = state(); 243 int num = state.boundariesCrossed; 244 boolean isFinal = this.is$Final(); 245 getPackage_value = getPackage_compute(); 246 setPackage(getPackage_value); 247 if(isFinal && num == state().boundariesCrossed){ getPackage_computed = true; } 248 return getPackage_value; 249 } 250 /** 251 * @apilevel internal 252 */ 253 private String getPackage_compute() { return getAccess().type().packageName(); } 254 /** 255 * @apilevel internal 256 */ 257 protected boolean getID_computed = false; 258 /** 259 * @apilevel internal 260 */ 261 protected String getID_value; 262 /** 263 * @attribute syn nta 264 * @aspect Arrays 265 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/Arrays.jrag:57 266 */ 267 @SuppressWarnings({"unchecked", "cast"}) 268 public String getID() { 269 if(getID_computed) { 270 return getID_value; 271 } 272 ASTNode$State state = state(); 273 int num = state.boundariesCrossed; 274 boolean isFinal = this.is$Final(); 275 getID_value = getID_compute(); 276 setID(getID_value); 277 if(isFinal && num == state().boundariesCrossed){ getID_computed = true; } 278 return getID_value; 279 } 280 /** 281 * @apilevel internal 282 */ 283 private String getID_compute() { return getAccess().type().name(); } 284 /** 285 * @attribute syn 286 * @aspect DA 287 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/DefiniteAssignment.jrag:235 288 */ 289 public boolean isDAafter(Variable v) { 290 ASTNode$State state = state(); 291 try { return getAccess().isDAafter(v); } 292 finally { 293 } 294 } 295 /** 296 * @attribute syn 297 * @aspect DU 298 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/DefiniteAssignment.jrag:694 299 */ 300 public boolean isDUafter(Variable v) { 301 ASTNode$State state = state(); 302 try { return getAccess().isDUafter(v); } 303 finally { 304 } 305 } 306 /** 307 * @apilevel internal 308 */ 309 protected boolean decl_computed = false; 310 /** 311 * @apilevel internal 312 */ 313 protected TypeDecl decl_value; 314 /** 315 * @attribute syn 316 * @aspect TypeScopePropagation 317 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/LookupType.jrag:246 318 */ 319 @SuppressWarnings({"unchecked", "cast"}) 320 public TypeDecl decl() { 321 if(decl_computed) { 322 return decl_value; 323 } 324 ASTNode$State state = state(); 325 int num = state.boundariesCrossed; 326 boolean isFinal = this.is$Final(); 327 decl_value = decl_compute(); 328 if(isFinal && num == state().boundariesCrossed){ decl_computed = true; } 329 return decl_value; 330 } 331 /** 332 * @apilevel internal 333 */ 334 private TypeDecl decl_compute() { return getAccess().type().arrayType(); } 335 /** 336 * @attribute syn 337 * @aspect PrettyPrint 338 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/PrettyPrint.jadd:800 339 */ 340 public String dumpString() { 341 ASTNode$State state = state(); 342 try { return getClass().getName(); } 343 finally { 344 } 345 } 346 /** 347 * @attribute syn 348 * @aspect SyntacticClassification 349 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/SyntacticClassification.jrag:56 350 */ 351 public NameType predNameType() { 352 ASTNode$State state = state(); 353 try { return NameType.AMBIGUOUS_NAME; } 354 finally { 355 } 356 } 357 /** 358 * @attribute syn 359 * @aspect TypeHierarchyCheck 360 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/TypeHierarchyCheck.jrag:150 361 */ 362 public boolean staticContextQualifier() { 363 ASTNode$State state = state(); 364 try { return true; } 365 finally { 366 } 367 } 368 /** 369 * @apilevel internal 370 */ 371 public ASTNode rewriteTo() { 372 return super.rewriteTo(); 373 } 374 }