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 /** 015 * @production Stmt : {@link ASTNode}; 016 * @ast node 017 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/java.ast:195 018 */ 019 public abstract class Stmt extends ASTNode<ASTNode> implements Cloneable { 020 /** 021 * @apilevel low-level 022 */ 023 public void flushCache() { 024 } 025 /** 026 * @apilevel internal 027 */ 028 public void flushCollectionCache() { 029 } 030 /** 031 * @apilevel internal 032 */ 033 @SuppressWarnings({"unchecked", "cast"}) 034 public Stmt clone() throws CloneNotSupportedException { 035 Stmt node = (Stmt)super.clone(); 036 node.isDAafter_Variable_values = null; 037 node.isDUafter_Variable_values = null; 038 node.canCompleteNormally_computed = false; 039 node.localNum_computed = false; 040 node.in$Circle(false); 041 node.is$Final(false); 042 return node; 043 } 044 /** 045 * @ast method 046 * @aspect UnreachableStatements 047 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/UnreachableStatements.jrag:14 048 */ 049 void checkUnreachableStmt() { 050 if(!reachable() && reportUnreachable()) 051 error("statement is unreachable"); 052 } 053 /** 054 * @ast method 055 * @aspect CreateBCode 056 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Backend/CreateBCode.jrag:1174 057 */ 058 public void createBCode(CodeGeneration gen) { 059 gen.addLineNumberEntryAtCurrentPC(this); 060 } 061 /** 062 * @ast method 063 * 064 */ 065 public Stmt() { 066 super(); 067 068 069 } 070 /** 071 * Initializes the child array to the correct size. 072 * Initializes List and Opt nta children. 073 * @apilevel internal 074 * @ast method 075 * @ast method 076 * 077 */ 078 public void init$Children() { 079 } 080 /** 081 * @apilevel low-level 082 * @ast method 083 * 084 */ 085 protected int numChildren() { 086 return 0; 087 } 088 /** 089 * @apilevel internal 090 * @ast method 091 * 092 */ 093 public boolean mayHaveRewrite() { 094 return false; 095 } 096 /** 097 * @attribute syn 098 * @aspect PreciseRethrow 099 * @declaredat /home/jesper/svn/JastAddJ/Java7Frontend/PreciseRethrow.jrag:55 100 */ 101 @SuppressWarnings({"unchecked", "cast"}) 102 public abstract boolean modifiedInScope(Variable var); 103 protected java.util.Map isDAafter_Variable_values; 104 /** 105 * @attribute syn 106 * @aspect DA 107 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/DefiniteAssignment.jrag:325 108 */ 109 @SuppressWarnings({"unchecked", "cast"}) 110 public boolean isDAafter(Variable v) { 111 Object _parameters = v; 112 if(isDAafter_Variable_values == null) isDAafter_Variable_values = new java.util.HashMap(4); 113 if(isDAafter_Variable_values.containsKey(_parameters)) { 114 return ((Boolean)isDAafter_Variable_values.get(_parameters)).booleanValue(); 115 } 116 ASTNode$State state = state(); 117 int num = state.boundariesCrossed; 118 boolean isFinal = this.is$Final(); 119 boolean isDAafter_Variable_value = isDAafter_compute(v); 120 if(isFinal && num == state().boundariesCrossed){ isDAafter_Variable_values.put(_parameters, Boolean.valueOf(isDAafter_Variable_value)); } 121 return isDAafter_Variable_value; 122 } 123 /** 124 * @apilevel internal 125 */ 126 private boolean isDAafter_compute(Variable v) { return isDAbefore(v); } 127 protected java.util.Map isDUafter_Variable_values; 128 /** 129 * @attribute syn 130 * @aspect DU 131 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/DefiniteAssignment.jrag:777 132 */ 133 @SuppressWarnings({"unchecked", "cast"}) 134 public boolean isDUafter(Variable v) { 135 Object _parameters = v; 136 if(isDUafter_Variable_values == null) isDUafter_Variable_values = new java.util.HashMap(4); 137 if(isDUafter_Variable_values.containsKey(_parameters)) { 138 return ((Boolean)isDUafter_Variable_values.get(_parameters)).booleanValue(); 139 } 140 ASTNode$State state = state(); 141 int num = state.boundariesCrossed; 142 boolean isFinal = this.is$Final(); 143 boolean isDUafter_Variable_value = isDUafter_compute(v); 144 if(isFinal && num == state().boundariesCrossed){ isDUafter_Variable_values.put(_parameters, Boolean.valueOf(isDUafter_Variable_value)); } 145 return isDUafter_Variable_value; 146 } 147 /** 148 * @apilevel internal 149 */ 150 private boolean isDUafter_compute(Variable v) { 151 throw new Error("isDUafter in " + getClass().getName()); 152 } 153 /** 154 * @attribute syn 155 * @aspect VariableScope 156 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/LookupVariable.jrag:129 157 */ 158 public boolean declaresVariable(String name) { 159 ASTNode$State state = state(); 160 try { return false; } 161 finally { 162 } 163 } 164 /** 165 * @attribute syn 166 * @aspect NameCheck 167 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/NameCheck.jrag:401 168 */ 169 public boolean continueLabel() { 170 ASTNode$State state = state(); 171 try { return false; } 172 finally { 173 } 174 } 175 /** 176 * @attribute syn 177 * @aspect PrettyPrint 178 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/PrettyPrint.jadd:758 179 */ 180 public boolean addsIndentationLevel() { 181 ASTNode$State state = state(); 182 try { return true; } 183 finally { 184 } 185 } 186 /** 187 * @apilevel internal 188 */ 189 protected boolean canCompleteNormally_computed = false; 190 /** 191 * @apilevel internal 192 */ 193 protected boolean canCompleteNormally_value; 194 /** 195 * @attribute syn 196 * @aspect UnreachableStatements 197 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/UnreachableStatements.jrag:29 198 */ 199 @SuppressWarnings({"unchecked", "cast"}) 200 public boolean canCompleteNormally() { 201 if(canCompleteNormally_computed) { 202 return canCompleteNormally_value; 203 } 204 ASTNode$State state = state(); 205 int num = state.boundariesCrossed; 206 boolean isFinal = this.is$Final(); 207 canCompleteNormally_value = canCompleteNormally_compute(); 208 if(isFinal && num == state().boundariesCrossed){ canCompleteNormally_computed = true; } 209 return canCompleteNormally_value; 210 } 211 /** 212 * @apilevel internal 213 */ 214 private boolean canCompleteNormally_compute() { return true; } 215 /** 216 * @attribute syn 217 * @aspect CreateBCode 218 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Backend/CreateBCode.jrag:1398 219 */ 220 public int break_label() { 221 ASTNode$State state = state(); 222 try { 223 throw new UnsupportedOperationException("Can not break at this statement of type " + getClass().getName()); 224 } 225 finally { 226 } 227 } 228 /** 229 * @attribute syn 230 * @aspect CreateBCode 231 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Backend/CreateBCode.jrag:1417 232 */ 233 public int continue_label() { 234 ASTNode$State state = state(); 235 try { 236 throw new UnsupportedOperationException("Can not continue at this statement"); 237 } 238 finally { 239 } 240 } 241 /** 242 * @attribute inh 243 * @aspect DA 244 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/DefiniteAssignment.jrag:232 245 */ 246 @SuppressWarnings({"unchecked", "cast"}) 247 public boolean isDAbefore(Variable v) { 248 ASTNode$State state = state(); 249 boolean isDAbefore_Variable_value = getParent().Define_boolean_isDAbefore(this, null, v); 250 return isDAbefore_Variable_value; 251 } 252 /** 253 * @attribute inh 254 * @aspect DU 255 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/DefiniteAssignment.jrag:691 256 */ 257 @SuppressWarnings({"unchecked", "cast"}) 258 public boolean isDUbefore(Variable v) { 259 ASTNode$State state = state(); 260 boolean isDUbefore_Variable_value = getParent().Define_boolean_isDUbefore(this, null, v); 261 return isDUbefore_Variable_value; 262 } 263 /** 264 * @attribute inh 265 * @aspect LookupMethod 266 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/LookupMethod.jrag:24 267 */ 268 @SuppressWarnings({"unchecked", "cast"}) 269 public Collection lookupMethod(String name) { 270 ASTNode$State state = state(); 271 Collection lookupMethod_String_value = getParent().Define_Collection_lookupMethod(this, null, name); 272 return lookupMethod_String_value; 273 } 274 /** 275 * @attribute inh 276 * @aspect LookupFullyQualifiedTypes 277 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/LookupType.jrag:96 278 */ 279 @SuppressWarnings({"unchecked", "cast"}) 280 public TypeDecl lookupType(String packageName, String typeName) { 281 ASTNode$State state = state(); 282 TypeDecl lookupType_String_String_value = getParent().Define_TypeDecl_lookupType(this, null, packageName, typeName); 283 return lookupType_String_String_value; 284 } 285 /** 286 * @attribute inh 287 * @aspect TypeScopePropagation 288 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/LookupType.jrag:262 289 */ 290 @SuppressWarnings({"unchecked", "cast"}) 291 public SimpleSet lookupType(String name) { 292 ASTNode$State state = state(); 293 SimpleSet lookupType_String_value = getParent().Define_SimpleSet_lookupType(this, null, name); 294 return lookupType_String_value; 295 } 296 /** 297 * @attribute inh 298 * @aspect VariableScope 299 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/LookupVariable.jrag:16 300 */ 301 @SuppressWarnings({"unchecked", "cast"}) 302 public SimpleSet lookupVariable(String name) { 303 ASTNode$State state = state(); 304 SimpleSet lookupVariable_String_value = getParent().Define_SimpleSet_lookupVariable(this, null, name); 305 return lookupVariable_String_value; 306 } 307 /** 308 * @attribute inh 309 * @aspect NestedTypes 310 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/TypeAnalysis.jrag:511 311 */ 312 @SuppressWarnings({"unchecked", "cast"}) 313 public BodyDecl enclosingBodyDecl() { 314 ASTNode$State state = state(); 315 BodyDecl enclosingBodyDecl_value = getParent().Define_BodyDecl_enclosingBodyDecl(this, null); 316 return enclosingBodyDecl_value; 317 } 318 /** 319 * @attribute inh 320 * @aspect NestedTypes 321 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/TypeAnalysis.jrag:587 322 */ 323 @SuppressWarnings({"unchecked", "cast"}) 324 public TypeDecl hostType() { 325 ASTNode$State state = state(); 326 TypeDecl hostType_value = getParent().Define_TypeDecl_hostType(this, null); 327 return hostType_value; 328 } 329 /** 330 * @attribute inh 331 * @aspect UnreachableStatements 332 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/UnreachableStatements.jrag:27 333 */ 334 @SuppressWarnings({"unchecked", "cast"}) 335 public boolean reachable() { 336 ASTNode$State state = state(); 337 boolean reachable_value = getParent().Define_boolean_reachable(this, null); 338 return reachable_value; 339 } 340 /** 341 * @attribute inh 342 * @aspect UnreachableStatements 343 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/UnreachableStatements.jrag:147 344 */ 345 @SuppressWarnings({"unchecked", "cast"}) 346 public boolean reportUnreachable() { 347 ASTNode$State state = state(); 348 boolean reportUnreachable_value = getParent().Define_boolean_reportUnreachable(this, null); 349 return reportUnreachable_value; 350 } 351 /** 352 * @apilevel internal 353 */ 354 protected boolean localNum_computed = false; 355 /** 356 * @apilevel internal 357 */ 358 protected int localNum_value; 359 /** 360 * @attribute inh 361 * @aspect LocalNum 362 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Backend/LocalNum.jrag:12 363 */ 364 @SuppressWarnings({"unchecked", "cast"}) 365 public int localNum() { 366 if(localNum_computed) { 367 return localNum_value; 368 } 369 ASTNode$State state = state(); 370 int num = state.boundariesCrossed; 371 boolean isFinal = this.is$Final(); 372 localNum_value = getParent().Define_int_localNum(this, null); 373 if(isFinal && num == state().boundariesCrossed){ localNum_computed = true; } 374 return localNum_value; 375 } 376 /** 377 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/PrettyPrint.jadd:352 378 * @apilevel internal 379 */ 380 public String Define_String_typeDeclIndent(ASTNode caller, ASTNode child) { 381 { 382 int childIndex = this.getIndexOfChild(caller); 383 return indent(); 384 } 385 } 386 /** 387 * @apilevel internal 388 */ 389 public ASTNode rewriteTo() { 390 return super.rewriteTo(); 391 } 392 }