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

📄 prettyprint.jadd

📁 JDK1.4编译器前端
💻 JADD
📖 第 1 页 / 共 2 页
字号:
  // Binary Expr  public void Binary.toString(StringBuffer s) {    getLeftOperand().toString(s);    s.append(printOp());    getRightOperand().toString(s);  }  syn String Binary.printOp();  eq MulExpr.printOp() = " * ";  eq DivExpr.printOp() = " / ";  eq ModExpr.printOp() = " % ";  eq AddExpr.printOp() = " + ";  eq SubExpr.printOp() = " - ";  eq LShiftExpr.printOp() = " << ";  eq RShiftExpr.printOp() = " >> ";  eq URShiftExpr.printOp() = " >>> ";  eq AndBitwiseExpr.printOp() = " & ";  eq OrBitwiseExpr.printOp() = " | ";  eq XorBitwiseExpr.printOp() = " ^ ";  eq AndLogicalExpr.printOp() = " && ";  eq OrLogicalExpr.printOp() = " || ";  eq LTExpr.printOp() = " < ";  eq GTExpr.printOp() = " > ";  eq LEExpr.printOp() = " <= ";  eq GEExpr.printOp() = " >= ";  eq EQExpr.printOp() = " == ";  eq NEExpr.printOp() = " != ";  public void InstanceOfExpr.toString(StringBuffer s) {    getExpr().toString(s);    s.append(" instanceof ");    getTypeAccess().toString(s);  }  public void ConditionalExpr.toString(StringBuffer s) {    getCondition().toString(s);    s.append(" ? ");    getTrueExpr().toString(s);    s.append(" : ");    getFalseExpr().toString(s);  }  public void Modifiers.toString(StringBuffer s) {    for(int i = 0; i < getNumModifier(); i++) {      getModifier(i).toString(s);      s.append(" ");    }  }       public void Modifier.toString(StringBuffer s) {    s.append(getID());  }  public void AbstractDot.toString(StringBuffer s) {    getLeft().toString(s);    if(!nextAccess().isArrayAccess())      s.append(".");    getRight().toString(s);  }  public void VarAccess.toString(StringBuffer s) {    s.append(name());  }  public void MethodAccess.toString(StringBuffer s) {    s.append(name());    s.append("(");    if(getNumArg() > 0) {      getArg(0).toString(s);      for(int i = 1; i < getNumArg(); i++) {        s.append(", ");        getArg(i).toString(s);      }    }    s.append(")");  }  public void ConstructorAccess.toString(StringBuffer s) {    s.append(name());    s.append("(");    if(getNumArg() > 0) {      getArg(0).toString(s);      for(int i = 1; i < getNumArg(); i++) {        s.append(", ");        getArg(i).toString(s);      }    }    s.append(")");  }    public void TypeAccess.toString(StringBuffer s) {    if(decl().isReferenceType())      s.append(nameWithPackage());    else      s.append(decl().name());  }    public void ArrayTypeAccess.toString(StringBuffer s) {    getAccess().toString(s);    s.append("[]");  }  public void ArrayTypeWithSizeAccess.toString(StringBuffer s) {    getAccess().toString(s);    s.append("[");    getExpr().toString(s);    s.append("]");  }  public void ThisAccess.toString(StringBuffer s) {    s.append("this");  }    public void SuperAccess.toString(StringBuffer s) {    s.append("super");  }  public void PackageAccess.toString(StringBuffer s) {    s.append(getPackage());  }  public void ArrayAccess.toString(StringBuffer s) {    s.append("[");    getExpr().toString(s);    s.append("]");  }  public void ClassAccess.toString(StringBuffer s) {    s.append("class");  }  // Stmts  public void Block.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");  }  public void EmptyStmt.toString(StringBuffer s) {    s.append(";\n");  }  public void LabeledStmt.toString(StringBuffer s) {    s.append(getLabel() + ":\n");    s.append(indent());    getStmt().toString(s);  }  public void ExprStmt.toString(StringBuffer s) {    getExpr().toString(s);    s.append(";\n");  }  public void SwitchStmt.toString(StringBuffer s) {    s.append("switch (");    getExpr().toString(s);    s.append(")");    getBlock().toString(s);  }  public void ConstCase.toString(StringBuffer s) {    s.append(indent());    s.append("case ");    getValue().toString(s);    s.append(":\n");  }  public void DefaultCase.toString(StringBuffer s) {    s.append(indent());    s.append("default:\n");  }  public void IfStmt.toString(StringBuffer s) {    s.append("if(");    getCondition().toString(s);    s.append(") ");    getThen().toString(s);    if(hasElse()) {      s.append(indent());      s.append("else ");      getElse().toString(s);    }  }  public void WhileStmt.toString(StringBuffer s) {    s.append("while(");    getCondition().toString(s);    s.append(") ");    getStmt().toString(s);  }  public void DoStmt.toString(StringBuffer s) {    s.append("do ");    getStmt().toString(s);    s.append("while(");    getCondition().toString(s);    s.append(");\n");  }  public void ForStmt.toString(StringBuffer s) {    s.append("for(");    if(getNumInitStmt() > 0) {      if(getInitStmt(0) instanceof VariableDeclaration) {        int minDimension = Integer.MAX_VALUE;        for(int i = 0; i < getNumInitStmt(); i++) {          VariableDeclaration v = (VariableDeclaration)getInitStmt(i);          minDimension = Math.min(minDimension, v.type().dimension());        }        VariableDeclaration v = (VariableDeclaration)getInitStmt(0);        v.getModifiers().toString(s);        s.append(v.type().elementType().typeName());        for(int i = minDimension; i > 0; i--)          s.append("[]");        for(int i = 0; i < getNumInitStmt(); i++) {          if(i != 0)            s.append(",");          v = (VariableDeclaration)getInitStmt(i);          s.append(" " + v.name());          for(int j = v.type().dimension() - minDimension; j > 0; j--)            s.append("[]");          if(v.hasInit()) {            s.append(" = ");            v.getInit().toString(s);          }        }      }      else if(getInitStmt(0) instanceof ExprStmt) {        ExprStmt stmt = (ExprStmt)getInitStmt(0);        stmt.getExpr().toString(s);        for(int i = 1; i < getNumInitStmt(); i++) {          s.append(", ");          stmt = (ExprStmt)getInitStmt(i);          stmt.getExpr().toString(s);        }      }      else {        throw new Error("Unexpected initializer in for loop: " + getInitStmt(0));      }    }        s.append("; ");    if(hasCondition()) {      getCondition().toString(s);    }    s.append("; ");    if(getNumUpdateStmt() > 0) {      ExprStmt stmt = (ExprStmt)getUpdateStmt(0);      stmt.getExpr().toString(s);      for(int i = 1; i < getNumUpdateStmt(); i++) {        s.append(", ");        stmt = (ExprStmt)getUpdateStmt(i);        stmt.getExpr().toString(s);      }    }        s.append(") ");    getStmt().toString(s);  }  public void BreakStmt.toString(StringBuffer s) {    s.append("break ");    if(hasLabel())      s.append(getLabel());    s.append(";\n");  }  public void ContinueStmt.toString(StringBuffer s) {    s.append("continue ");    if(hasLabel())      s.append(getLabel());    s.append(";\n");  }  public void ReturnStmt.toString(StringBuffer s) {    s.append("return ");    if(hasResult()) {      getResult().toString(s);    }    s.append(";\n");  }  public void ThrowStmt.toString(StringBuffer s) {    s.append("throw ");    getExpr().toString(s);    s.append(";\n");  }  public void SynchronizedStmt.toString(StringBuffer s) {    s.append("synchronized(");    getExpr().toString(s);    s.append(") ");    getBlock().toString(s);  }  public void TryStmt.toString(StringBuffer s) {    s.append("try ");    getBlock().toString(s);    for(int i = 0; i < getNumCatchClause(); i++) {      s.append(indent());      getCatchClause(i).toString(s);    }    if(hasFinally()) {      s.append(indent());      s.append("finally ");      getFinally().toString(s);    }  }  public void CatchClause.toString(StringBuffer s) {    s.append("catch (");    getParameter().toString(s);    s.append(") ");    getBlock().toString(s);  }  public void AssertStmt.toString(StringBuffer s) {    s.append("assert ");    getfirst().toString(s);    if(hasExpr()) {      s.append(" : ");      getExpr().toString(s);    }    s.append(";\n");  }    public void LocalClassDeclStmt.toString(StringBuffer s) {    getClassDecl().toString(s);  }  // dump the AST to standard output  public String ASTNode.dumpTree() {    StringBuffer s = new StringBuffer();    dumpTree(s, 0);    return s.toString();  }  public void ASTNode.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);  }  public String ASTNode.dumpTreeNoRewrite() {    StringBuffer s = new StringBuffer();    dumpTreeNoRewrite(s, 0);    return s.toString();  }  protected void ASTNode.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);    }  }  syn String ASTNode.dumpString() = getClass().getName();  eq CompilationUnit.dumpString() = getClass().getName() + " [" + getPackageDecl() + "]";  eq VarAccess.dumpString() = getClass().getName() + " [" + getID() + "]";  eq MethodAccess.dumpString() = getClass().getName() + " [" + getID() + "]";  eq TypeAccess.dumpString() = getClass().getName() + " [" + getPackage() + ", " + getID() + "]";  eq ArrayTypeAccess.dumpString() = getClass().getName();  eq PackageAccess.dumpString() = getClass().getName() + " [" + getPackage() + "]";  eq ParseName.dumpString() = getClass().getName() + " [" + getID() + "]";  eq PackageOrTypeAccess.dumpString() = getClass().getName() + " [" + getID() + "]";  eq AmbiguousAccess.dumpString() = getClass().getName() + " [" + getID() + "]";  eq TypeDecl.dumpString() = getClass().getName() + " [" + getID() + "]";  eq FieldDeclaration.dumpString() = getClass().getName() + " [" + getID() + "]";  eq VariableDeclaration.dumpString() = getClass().getName() + " [" + getID() + "]";  eq ParameterDeclaration.dumpString() = getClass().getName() + " [" + getID() + "]";  eq MethodDecl.dumpString() = getClass().getName() + " [" + getID() + "]";  eq Modifier.dumpString() = getClass().getName() + " [" + getID() + "]";  eq Literal.dumpString() = getClass().getName() + " [" + getLITERAL() + "]";  eq BoundTypeAccess.dumpString() = getClass().getName() + " [" + getTypeDecl().fullName() + "]";  public String Program.dumpTree() {    StringBuffer s = new StringBuffer();    for(Iterator iter = compilationUnitIterator(); iter.hasNext(); ) {      CompilationUnit cu = (CompilationUnit)iter.next();      if(cu.fromSource()) {         s.append(cu.dumpTree());      }    }    return s.toString();  }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -