001 /* This file was generated with JastAdd2 (http://jastadd.org) version 2.1.3 */ 002 package AST; 003 004 import java.util.Collection; 005 import java.util.ArrayList; 006 import java.util.HashSet; 007 /** 008 * @ast node 009 * @declaredat /home/csz-naf/examples/PicoJava/spec/picojava.ast:4 010 * @production BlockStmt : {@link ASTNode}; 011 012 */ 013 public abstract class BlockStmt extends ASTNode<ASTNode> implements Cloneable { 014 /** 015 * @apilevel internal 016 */ 017 public BlockStmt clone() throws CloneNotSupportedException { 018 BlockStmt node = (BlockStmt) super.clone(); 019 node.declarationOf_String_visited = null; 020 node.endsWithReturn_visited = -1; 021 node.declarationOf_String_List_visited = null; 022 node.declarationOf_String_List_values = null; 023 node.in$Circle(false); 024 node.is$Final(false); 025 return node; 026 } 027 /** 028 * @aspect PrettyPrint 029 * @declaredat /home/csz-naf/examples/PicoJava/spec/PrettyPrint.jadd:39 030 */ 031 abstract void prettyPrint(StringBuilder sb, int t); 032 /** 033 */ 034 public BlockStmt() { 035 super(); 036 } 037 /** 038 * Initializes the child array to the correct size. 039 * Initializes List and Opt nta children. 040 * @apilevel internal 041 * @ast method 042 */ 043 public void init$Children() { 044 } 045 /** 046 * @apilevel low-level 047 */ 048 protected int numChildren() { 049 return 0; 050 } 051 /** 052 * @apilevel internal 053 */ 054 public boolean mayHaveRewrite() { 055 return false; 056 } 057 /** 058 * @apilevel low-level 059 */ 060 public void flushCache() { 061 super.flushCache(); 062 declarationOf_String_visited = null; 063 endsWithReturn_visited = -1; 064 declarationOf_String_List_visited = null; 065 declarationOf_String_List_values = null; 066 } 067 /** 068 * @apilevel internal 069 */ 070 public void flushCollectionCache() { 071 super.flushCollectionCache(); 072 } 073 /** 074 * @apilevel internal 075 */ 076 protected java.util.Map declarationOf_String_visited; 077 /** 078 * @attribute syn 079 * @aspect NameResolution 080 * @declaredat /home/csz-naf/examples/PicoJava/spec/NameResolution.jrag:100 081 */ 082 public Decl declarationOf(String name) { 083 Object _parameters = name; 084 if(declarationOf_String_visited == null) declarationOf_String_visited = new java.util.HashMap(4); 085 ASTNode$State state = state(); 086 if (Integer.valueOf(state().boundariesCrossed).equals(declarationOf_String_visited.get(_parameters))) { 087 throw new RuntimeException("Circular definition of attr: declarationOf in class: org.jastadd.ast.AST.SynDecl"); 088 } 089 declarationOf_String_visited.put(_parameters, Integer.valueOf(state().boundariesCrossed)); 090 try { return null; } 091 finally { 092 declarationOf_String_visited.remove(_parameters); 093 } 094 } 095 /** 096 * @apilevel internal 097 */ 098 protected int endsWithReturn_visited = -1; 099 /** 100 * @attribute syn 101 * @aspect ErrorCheck 102 * @declaredat /home/csz-naf/examples/PicoJavaMethods/spec/ErrorCheck.jrag:13 103 */ 104 public boolean endsWithReturn() { 105 ASTNode$State state = state(); 106 if (endsWithReturn_visited == state().boundariesCrossed) { 107 throw new RuntimeException("Circular definition of attr: endsWithReturn in class: org.jastadd.ast.AST.SynDecl"); 108 } 109 endsWithReturn_visited = state().boundariesCrossed; 110 try { return false; } 111 finally { 112 endsWithReturn_visited = -1; 113 } 114 } 115 /** 116 * @apilevel internal 117 */ 118 protected java.util.Map declarationOf_String_List_visited; 119 protected java.util.Map declarationOf_String_List_values; 120 /** 121 * @attribute syn 122 * @aspect NameResolution 123 * @declaredat /home/csz-naf/examples/PicoJavaMethods/spec/NameResolution.jrag:57 124 */ 125 public Decl declarationOf(String name, List argList) { 126 java.util.List _parameters = new java.util.ArrayList(2); 127 _parameters.add(name); 128 _parameters.add(argList); 129 if(declarationOf_String_List_visited == null) declarationOf_String_List_visited = new java.util.HashMap(4); 130 if(declarationOf_String_List_values == null) declarationOf_String_List_values = new java.util.HashMap(4); 131 if(declarationOf_String_List_values.containsKey(_parameters)) { 132 return (Decl)declarationOf_String_List_values.get(_parameters); 133 } 134 ASTNode$State state = state(); 135 if (Integer.valueOf(state().boundariesCrossed).equals(declarationOf_String_List_visited.get(_parameters))) { 136 throw new RuntimeException("Circular definition of attr: declarationOf in class: org.jastadd.ast.AST.SynDecl"); 137 } 138 declarationOf_String_List_visited.put(_parameters, Integer.valueOf(state().boundariesCrossed)); 139 int num = state.boundariesCrossed; 140 boolean isFinal = this.is$Final(); 141 Decl declarationOf_String_List_value = declarationOf_compute(name, argList); 142 if(isFinal && num == state().boundariesCrossed) { 143 declarationOf_String_List_values.put(_parameters, declarationOf_String_List_value); 144 } else { 145 } 146 147 declarationOf_String_List_visited.remove(_parameters); 148 return declarationOf_String_List_value; 149 } 150 /** 151 * @apilevel internal 152 */ 153 private Decl declarationOf_compute(String name, List argList) { return null; } 154 /** 155 * @apilevel internal 156 */ 157 public ASTNode rewriteTo() { return super.rewriteTo(); 158 }}