📄 astnode.java
字号:
public TypeDecl extractSingleType(SimpleSet c) { if(c.size() != 1) return null; return (TypeDecl)c.iterator().next(); } // Declared in PrettyPrint.jadd at line 13 // Helper for indentation protected static int indent = 0; // Declared in PrettyPrint.jadd at line 15 public static String indent() { StringBuffer s = new StringBuffer(); for(int i = 0; i < indent; i++) { s.append(" "); } return s.toString(); } // Declared in PrettyPrint.jadd at line 25 // Default output public String toString() { StringBuffer s = new StringBuffer(); toString(s); return s.toString().trim(); } // Declared in PrettyPrint.jadd at line 31 public void toString(StringBuffer s) { throw new Error("Operation toString(StringBuffer s) not implemented for " + getClass().getName()); } // Declared in PrettyPrint.jadd at line 749 // dump the AST to standard output public String dumpTree() { StringBuffer s = new StringBuffer(); dumpTree(s, 0); return s.toString(); } // Declared in PrettyPrint.jadd at line 755 public void dumpTree(StringBuffer s, int j) { for(int i = 0; i < j; i++) { s.append(" "); } s.append(dumpString() + "\n"); for(int i = 0; i < getNumChild(); i++) getChild(i).dumpTree(s, j + 1); } // Declared in PrettyPrint.jadd at line 764 public String dumpTreeNoRewrite() { StringBuffer s = new StringBuffer(); dumpTreeNoRewrite(s, 0); return s.toString(); } // Declared in PrettyPrint.jadd at line 769 protected void dumpTreeNoRewrite(StringBuffer s, int indent) { for(int i = 0; i < indent; i++) s.append(" "); s.append(dumpString()); s.append("\n"); for(int i = 0; i < getNumChildNoTransform(); i++) { getChildNoTransform(i).dumpTreeNoRewrite(s, indent+1); } } // Declared in PrimitiveTypes.jrag at line 11 protected static final String PRIMITIVE_PACKAGE_NAME = "@primitive"; // Declared in TypeCheck.jrag at line 12 public void typeCheck() { } // Declared in UnreachableStatements.jrag at line 12 void checkUnreachableStmt() { } // Declared in ASTNode.ast at line 3 // Declared in ASTNode.ast line 0
public ASTNode() { super();
} // Declared in ASTNode.ast at line 9
static public boolean generatedWithCircularEnabled = true; // Declared in ASTNode.ast at line 10
static public boolean generatedWithCacheCycle = true; // Declared in ASTNode.ast at line 11
static public boolean generatedWithComponentCheck = false; // Declared in ASTNode.ast at line 12
static public boolean IN_CIRCLE = false; // Declared in ASTNode.ast at line 13
static public int CIRCLE_INDEX; // Declared in ASTNode.ast at line 14
static public boolean CHANGE = false; // Declared in ASTNode.ast at line 15
static public boolean LAST_CYCLE = false; // Declared in ASTNode.ast at line 16
static public boolean RESET_CYCLE = false; // Declared in ASTNode.ast at line 17
private static java.util.HashMap debugRewrite = new java.util.HashMap(); // Declared in ASTNode.ast at line 19
public void debugRewrite(String info) {
if(!parent.is$Final()) return;
java.util.ArrayList key = new java.util.ArrayList(2);
key.add(getParent());
key.add(new Integer(getParent().getIndexOfChild(this)));
java.util.ArrayList list;
if(debugRewrite.containsKey(key))
list = (java.util.ArrayList)debugRewrite.get(key);
else {
list = new java.util.ArrayList();
debugRewrite.put(key, list);
}
list.add(info);
if(list.size() > 100) {
StringBuffer buf = new StringBuffer("Iteration count exceeded for rewrite:");
for(java.util.Iterator iter = list.iterator(); iter.hasNext(); ) buf.append("\n" + iter.next());
throw new RuntimeException(buf.toString());
}
} // Declared in ASTNode.ast at line 38
public void debugRewriteRemove() {
java.util.ArrayList key = new java.util.ArrayList(2);
key.add(getParent());
key.add(new Integer(getParent().getIndexOfChild(this)));
debugRewrite.remove(key);
} // Declared in ASTNode.ast at line 45
public static int boundariesCrossed = 0; // Declared in ASTNode.ast at line 72
protected static ASTNode$State state = new ASTNode$State(); // Declared in ASTNode.ast at line 73
public boolean in$Circle = false; // Declared in ASTNode.ast at line 74
public boolean in$Circle() { return in$Circle; } // Declared in ASTNode.ast at line 75
public void in$Circle(boolean b) { in$Circle = b; } // Declared in ASTNode.ast at line 76
public boolean is$Final = false; // Declared in ASTNode.ast at line 77
public boolean is$Final() { return is$Final; } // Declared in ASTNode.ast at line 78
public void is$Final(boolean b) { is$Final = b; } // Declared in ASTNode.ast at line 79
protected static final int REWRITE_CHANGE = 1; // Declared in ASTNode.ast at line 80
protected static final int REWRITE_NOCHANGE = 2; // Declared in ASTNode.ast at line 81
protected static final int REWRITE_INTERRUPT = 3; // Declared in ASTNode.ast at line 82
@SuppressWarnings("cast") public T getChild(int i) {
return (T)ASTNode.getChild(this, i);
} // Declared in ASTNode.ast at line 85
public static ASTNode getChild(ASTNode that, int i) {
ASTNode node = that.getChildNoTransform(i);
if(node.is$Final()) return node;
if(!node.mayHaveRewrite()) {
node.is$Final(that.is$Final());
return node;
}
if(!node.in$Circle()) {
int rewriteState;
int num = ASTNode.boundariesCrossed;
do {
ASTNode.state.push(ASTNode.REWRITE_CHANGE);
ASTNode oldNode = node;
oldNode.in$Circle(true);
node = node.rewriteTo();
if(node != oldNode)
that.setChild(node, i);
oldNode.in$Circle(false);
rewriteState = state.pop();
} while(rewriteState == ASTNode.REWRITE_CHANGE);
if(rewriteState == ASTNode.REWRITE_NOCHANGE && that.is$Final()) {
node.is$Final(true);
ASTNode.boundariesCrossed = num;
node.debugRewriteRemove();
}
}
else if(that.is$Final() != node.is$Final()) boundariesCrossed++;
return node;
} // Declared in ASTNode.ast at line 114
private int childIndex; // Declared in ASTNode.ast at line 115
public int getIndexOfChild(ASTNode node) {
if(node != null && node.childIndex < getNumChildNoTransform() && node == getChildNoTransform(node.childIndex))
return node.childIndex;
for(int i = 0; i < getNumChildNoTransform(); i++)
if(getChildNoTransform(i) == node) {
node.childIndex = i;
return i;
}
return -1;
} // Declared in ASTNode.ast at line 126
public void addChild(T node) {
setChild(node, getNumChildNoTransform());
} // Declared in ASTNode.ast at line 129
@SuppressWarnings("cast") public final T getChildNoTransform(int i) {
return (T)children[i];
} // Declared in ASTNode.ast at line 132
protected ASTNode parent; // Declared in ASTNode.ast at line 133
protected ASTNode[] children; // Declared in ASTNode.ast at line 134
protected int numChildren; // Declared in ASTNode.ast at line 135
protected int numChildren() {
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -