⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 astnode.java

📁 JDK1.4编译器前端
💻 JAVA
📖 第 1 页 / 共 4 页
字号:
  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 + -