📄 block.java
字号:
package AST;
import java.util.HashSet;import java.util.LinkedHashSet;import java.io.FileNotFoundException;import java.io.File;import java.util.*;import beaver.*;import java.util.ArrayList;import java.util.zip.*;import java.io.*; // a statement that can be reached by break or continuepublic class Block extends Stmt implements Cloneable, VariableScope {
public void flushCache() { super.flushCache(); checkReturnDA_Variable_visited = new java.util.HashMap(4); checkReturnDA_Variable_values = null; isDAafter_Variable_visited = new java.util.HashMap(4); isDAafter_Variable_values = null; isDUeverywhere_Variable_visited = new java.util.HashMap(4); checkReturnDU_Variable_visited = new java.util.HashMap(4); checkReturnDU_Variable_values = null; isDUafter_Variable_visited = new java.util.HashMap(4); isDUafter_Variable_values = null; localVariableDeclaration_String_visited = new java.util.HashMap(4); localVariableDeclaration_String_values = null; canCompleteNormally_visited = -1; canCompleteNormally_computed = false; lookupType_String_visited = new java.util.HashMap(4); lookupType_String_values = null; lookupVariable_String_visited = new java.util.HashMap(4); lookupVariable_String_values = null; reachable_visited = -1; } @SuppressWarnings({"unchecked", "cast"}) public Block clone() throws CloneNotSupportedException { Block node = (Block)super.clone(); node.checkReturnDA_Variable_visited = new java.util.HashMap(4); node.checkReturnDA_Variable_values = null; node.isDAafter_Variable_visited = new java.util.HashMap(4); node.isDAafter_Variable_values = null; node.isDUeverywhere_Variable_visited = new java.util.HashMap(4); node.checkReturnDU_Variable_visited = new java.util.HashMap(4); node.checkReturnDU_Variable_values = null; node.isDUafter_Variable_visited = new java.util.HashMap(4); node.isDUafter_Variable_values = null; node.localVariableDeclaration_String_visited = new java.util.HashMap(4); node.localVariableDeclaration_String_values = null; node.canCompleteNormally_visited = -1; node.canCompleteNormally_computed = false; node.lookupType_String_visited = new java.util.HashMap(4); node.lookupType_String_values = null; node.lookupVariable_String_visited = new java.util.HashMap(4); node.lookupVariable_String_values = null; node.reachable_visited = -1; node.in$Circle(false); node.is$Final(false); return node; } @SuppressWarnings({"unchecked", "cast"}) public Block copy() { try { Block node = (Block)clone(); if(children != null) node.children = (ASTNode[])children.clone(); return node; } catch (CloneNotSupportedException e) { } System.err.println("Error: Could not clone node of type " + getClass().getName() + "!"); return null; } @SuppressWarnings({"unchecked", "cast"}) public Block fullCopy() { Block res = (Block)copy(); for(int i = 0; i < getNumChildNoTransform(); i++) { ASTNode node = getChildNoTransform(i); if(node != null) node = node.fullCopy(); res.setChild(node, i); } return res; } // Declared in DeclareBeforeUse.jrag at line 21 public boolean declaredBeforeUse(Variable decl, ASTNode use) { int indexDecl = ((ASTNode)decl).varChildIndex(this); int indexUse = use.varChildIndex(this); return indexDecl <= indexUse; } // Declared in DeclareBeforeUse.jrag at line 26 public boolean declaredBeforeUse(Variable decl, int indexUse) { int indexDecl = ((ASTNode)decl).varChildIndex(this); return indexDecl <= indexUse; } // Declared in PrettyPrint.jadd at line 542 // Stmts public void toString(StringBuffer s) { s.append("{\n"); indent++; for(int i = 0; i < getNumStmt(); i++) { s.append(indent()); getStmt(i).toString(s); } indent--; s.append(indent()); s.append("}\n"); } // Declared in java.ast at line 3 // Declared in java.ast line 200
public Block() { super();
setChild(new List(), 0);
} // Declared in java.ast at line 11
// Declared in java.ast line 200 public Block(List<Stmt> p0) { setChild(p0, 0); } // Declared in java.ast at line 15 protected int numChildren() {
return 1;
} // Declared in java.ast at line 18
public boolean mayHaveRewrite() { return false; } // Declared in java.ast at line 2 // Declared in java.ast line 200 public void setStmtList(List<Stmt> list) { setChild(list, 0); } // Declared in java.ast at line 6 private int getNumStmt = 0; // Declared in java.ast at line 7 public int getNumStmt() { return getStmtList().getNumChild(); } // Declared in java.ast at line 11 @SuppressWarnings({"unchecked", "cast"}) public Stmt getStmt(int i) { return (Stmt)getStmtList().getChild(i); } // Declared in java.ast at line 15 public void addStmt(Stmt node) { List<Stmt> list = getStmtList(); list.addChild(node); } // Declared in java.ast at line 20 public void setStmt(Stmt node, int i) { List<Stmt> list = getStmtList(); list.setChild(node, i); } // Declared in java.ast at line 24 public List<Stmt> getStmts() { return getStmtList(); } // Declared in java.ast at line 27 public List<Stmt> getStmtsNoTransform() { return getStmtListNoTransform(); } // Declared in java.ast at line 31 @SuppressWarnings({"unchecked", "cast"}) public List<Stmt> getStmtList() { return (List<Stmt>)getChild(0); } // Declared in java.ast at line 35 @SuppressWarnings({"unchecked", "cast"}) public List<Stmt> getStmtListNoTransform() { return (List<Stmt>)getChildNoTransform(0); } protected java.util.Map checkReturnDA_Variable_visited; protected java.util.Map checkReturnDA_Variable_values; // Declared in DefiniteAssignment.jrag at line 302 @SuppressWarnings({"unchecked", "cast"}) public boolean checkReturnDA(Variable v) { Object _parameters = v;if(checkReturnDA_Variable_visited == null) checkReturnDA_Variable_visited = new java.util.HashMap(4);if(checkReturnDA_Variable_values == null) checkReturnDA_Variable_values = new java.util.HashMap(4); if(checkReturnDA_Variable_values.containsKey(_parameters)) return ((Boolean)checkReturnDA_Variable_values.get(_parameters)).booleanValue(); if(new Integer(boundariesCrossed).equals(checkReturnDA_Variable_visited.get(_parameters))) throw new RuntimeException("Circular definition of attr: checkReturnDA in class: "); checkReturnDA_Variable_visited.put(_parameters, new Integer(boundariesCrossed)); int num = boundariesCrossed; boolean isFinal = this.is$Final(); boolean checkReturnDA_Variable_value = checkReturnDA_compute(v); if(isFinal && num == boundariesCrossed) checkReturnDA_Variable_values.put(_parameters, Boolean.valueOf(checkReturnDA_Variable_value)); checkReturnDA_Variable_visited.remove(_parameters); return checkReturnDA_Variable_value; } private boolean checkReturnDA_compute(Variable v) { HashSet set = new HashSet(); collectBranches(set); for(Iterator iter = set.iterator(); iter.hasNext(); ) { Object o = iter.next(); if(o instanceof ReturnStmt) { ReturnStmt stmt = (ReturnStmt)o; if(!stmt.isDAafterReachedFinallyBlocks(v)) return false; } } return true; } protected java.util.Map isDAafter_Variable_visited; // Declared in DefiniteAssignment.jrag at line 442 @SuppressWarnings({"unchecked", "cast"}) public boolean isDAafter(Variable v) { Object _parameters = v;if(isDAafter_Variable_visited == null) isDAafter_Variable_visited = new java.util.HashMap(4);if(isDAafter_Variable_values == null) isDAafter_Variable_values = new java.util.HashMap(4); if(isDAafter_Variable_values.containsKey(_parameters)) return ((Boolean)isDAafter_Variable_values.get(_parameters)).booleanValue(); if(new Integer(boundariesCrossed).equals(isDAafter_Variable_visited.get(_parameters))) throw new RuntimeException("Circular definition of attr: isDAafter in class: "); isDAafter_Variable_visited.put(_parameters, new Integer(boundariesCrossed)); int num = boundariesCrossed; boolean isFinal = this.is$Final(); boolean isDAafter_Variable_value = isDAafter_compute(v); if(isFinal && num == boundariesCrossed) isDAafter_Variable_values.put(_parameters, Boolean.valueOf(isDAafter_Variable_value)); isDAafter_Variable_visited.remove(_parameters); return isDAafter_Variable_value; } private boolean isDAafter_compute(Variable v) { return getNumStmt() == 0 ? isDAbefore(v) : getStmt(getNumStmt()-1).isDAafter(v); } protected java.util.Map isDUeverywhere_Variable_visited; // Declared in DefiniteAssignment.jrag at line 448 @SuppressWarnings({"unchecked", "cast"}) public boolean isDUeverywhere(Variable v) { Object _parameters = v;if(isDUeverywhere_Variable_visited == null) isDUeverywhere_Variable_visited = new java.util.HashMap(4); if(new Integer(boundariesCrossed).equals(isDUeverywhere_Variable_visited.get(_parameters))) throw new RuntimeException("Circular definition of attr: isDUeverywhere in class: "); isDUeverywhere_Variable_visited.put(_parameters, new Integer(boundariesCrossed)); boolean isDUeverywhere_Variable_value = isDUeverywhere_compute(v); isDUeverywhere_Variable_visited.remove(_parameters); return isDUeverywhere_Variable_value; }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -