jctree.java

来自「是一款用JAVA 编写的编译器 具有很强的编译功能」· Java 代码 · 共 2,048 行 · 第 1/5 页

JAVA
2,048
字号
     */    public static class JCThrow extends JCStatement implements ThrowTree {        public JCExpression expr;        protected JCThrow(JCTree expr) {            this.expr = (JCExpression)expr;        }        @Override        public void accept(Visitor v) { v.visitThrow(this); }        public Kind getKind() { return Kind.THROW; }        public JCExpression getExpression() { return expr; }        @Override        public <R,D> R accept(TreeVisitor<R,D> v, D d) {            return v.visitThrow(this, d);        }        @Override        public int getTag() {            return THROW;        }    }    /**     * An assert statement.     */    public static class JCAssert extends JCStatement implements AssertTree {        public JCExpression cond;        public JCExpression detail;        protected JCAssert(JCExpression cond, JCExpression detail) {            this.cond = cond;            this.detail = detail;        }        @Override        public void accept(Visitor v) { v.visitAssert(this); }        public Kind getKind() { return Kind.ASSERT; }        public JCExpression getCondition() { return cond; }        public JCExpression getDetail() { return detail; }        @Override        public <R,D> R accept(TreeVisitor<R,D> v, D d) {            return v.visitAssert(this, d);        }        @Override        public int getTag() {            return ASSERT;        }    }    /**     * A method invocation     */    public static class JCMethodInvocation extends JCExpression implements MethodInvocationTree {        public List<JCExpression> typeargs;        public JCExpression meth;        public List<JCExpression> args;        public Type varargsElement;        protected JCMethodInvocation(List<JCExpression> typeargs,			JCExpression meth,			List<JCExpression> args)	{	    this.typeargs = (typeargs == null) ? List.<JCExpression>nil()		                               : typeargs;            this.meth = meth;            this.args = args;        }        @Override        public void accept(Visitor v) { v.visitApply(this); }        public Kind getKind() { return Kind.METHOD_INVOCATION; }        public List<JCExpression> getTypeArguments() {            return typeargs;        }        public JCExpression getMethodSelect() { return meth; }        public List<JCExpression> getArguments() {            return args;        }        @Override        public <R,D> R accept(TreeVisitor<R,D> v, D d) {            return v.visitMethodInvocation(this, d);        }        @Override        public JCMethodInvocation setType(Type type) {            super.setType(type);            return this;        }        @Override        public int getTag() {            return(APPLY);        }    }    /**     * A new(...) operation.     */    public static class JCNewClass extends JCExpression implements NewClassTree {        public JCExpression encl;        public List<JCExpression> typeargs;        public JCExpression clazz;        public List<JCExpression> args;        public JCClassDecl def;        public Symbol constructor;        public Type varargsElement;        protected JCNewClass(JCExpression encl,			   List<JCExpression> typeargs,			   JCExpression clazz,			   List<JCExpression> args,			   JCClassDecl def)	{            this.encl = encl;	    this.typeargs = (typeargs == null) ? List.<JCExpression>nil()		                               : typeargs;            this.clazz = clazz;            this.args = args;            this.def = def;        }        @Override        public void accept(Visitor v) { v.visitNewClass(this); }        public Kind getKind() { return Kind.NEW_CLASS; }        public JCExpression getEnclosingExpression() { // expr.new C< ... > ( ... )            return encl;        }        public List<JCExpression> getTypeArguments() {            return typeargs;        }        public JCExpression getIdentifier() { return clazz; }        public List<JCExpression> getArguments() {            return args;        }        public JCClassDecl getClassBody() { return def; }        @Override        public <R,D> R accept(TreeVisitor<R,D> v, D d) {            return v.visitNewClass(this, d);        }        @Override        public int getTag() {            return NEWCLASS;        }    }    /**     * A new[...] operation.     */    public static class JCNewArray extends JCExpression implements NewArrayTree {        public JCExpression elemtype;        public List<JCExpression> dims;        public List<JCExpression> elems;        protected JCNewArray(JCExpression elemtype,			   List<JCExpression> dims,			   List<JCExpression> elems)	{            this.elemtype = elemtype;            this.dims = dims;            this.elems = elems;        }        @Override        public void accept(Visitor v) { v.visitNewArray(this); }        public Kind getKind() { return Kind.NEW_ARRAY; }        public JCExpression getType() { return elemtype; }        public List<JCExpression> getDimensions() {            return dims;        }        public List<JCExpression> getInitializers() {            return elems;        }        @Override        public <R,D> R accept(TreeVisitor<R,D> v, D d) {            return v.visitNewArray(this, d);        }        @Override        public int getTag() {            return NEWARRAY;        }    }    /**     * A parenthesized subexpression ( ... )     */    public static class JCParens extends JCExpression implements ParenthesizedTree {        public JCExpression expr;        protected JCParens(JCExpression expr) {            this.expr = expr;        }        @Override        public void accept(Visitor v) { v.visitParens(this); }        public Kind getKind() { return Kind.PARENTHESIZED; }        public JCExpression getExpression() { return expr; }        @Override        public <R,D> R accept(TreeVisitor<R,D> v, D d) {            return v.visitParenthesized(this, d);        }        @Override        public int getTag() {            return PARENS;        }    }    /**     * A assignment with "=".     */    public static class JCAssign extends JCExpression implements AssignmentTree {        public JCExpression lhs;        public JCExpression rhs;        protected JCAssign(JCExpression lhs, JCExpression rhs) {            this.lhs = lhs;            this.rhs = rhs;        }        @Override        public void accept(Visitor v) { v.visitAssign(this); }        public Kind getKind() { return Kind.ASSIGNMENT; }        public JCExpression getVariable() { return lhs; }        public JCExpression getExpression() { return rhs; }        @Override        public <R,D> R accept(TreeVisitor<R,D> v, D d) {            return v.visitAssignment(this, d);        }        @Override        public int getTag() {            return ASSIGN;        }    }    /**     * An assignment with "+=", "|=" ...     */    public static class JCAssignOp extends JCExpression implements CompoundAssignmentTree {	private int opcode;        public JCExpression lhs;        public JCExpression rhs;        public Symbol operator;        protected JCAssignOp(int opcode, JCTree lhs, JCTree rhs, Symbol operator) {	    this.opcode = opcode;            this.lhs = (JCExpression)lhs;            this.rhs = (JCExpression)rhs;            this.operator = operator;        }        @Override        public void accept(Visitor v) { v.visitAssignop(this); }        public Kind getKind() { return TreeInfo.tagToKind(getTag()); }        public JCExpression getVariable() { return lhs; }        public JCExpression getExpression() { return rhs; }        public Symbol getOperator() {	    return operator;        }        @Override        public <R,D> R accept(TreeVisitor<R,D> v, D d) {            return v.visitCompoundAssignment(this, d);        }	@Override        public int getTag() {            return opcode;        }    }    /**     * A unary operation.     */    public static class JCUnary extends JCExpression implements UnaryTree {	private int opcode;        public JCExpression arg;        public Symbol operator;        protected JCUnary(int opcode, JCExpression arg) {            this.opcode = opcode;            this.arg = arg;        }        @Override        public void accept(Visitor v) { v.visitUnary(this); }        public Kind getKind() { return TreeInfo.tagToKind(getTag()); }        public JCExpression getExpression() { return arg; }        public Symbol getOperator() {	    return operator;        }        @Override        public <R,D> R accept(TreeVisitor<R,D> v, D d) {            return v.visitUnary(this, d);        }	@Override        public int getTag() {            return opcode;        }                public void setTag(int tag) {            opcode = tag;        }    }    /**     * A binary operation.     */    public static class JCBinary extends JCExpression implements BinaryTree {	private int opcode;        public JCExpression lhs;        public JCExpression rhs;        public Symbol operator;        protected JCBinary(int opcode,			 JCExpression lhs,			 JCExpression rhs,			 Symbol operator) {	    this.opcode = opcode;            this.lhs = lhs;            this.rhs = rhs;            this.operator = operator;        }        @Override        public void accept(Visitor v) { v.visitBinary(this); }        public Kind getKind() { return TreeInfo.tagToKind(getTag()); }        public JCExpression getLeftOperand() { return lhs; }        public JCExpression getRightOperand() { return rhs; }        public Symbol getOperator() {	    return operator;        }        @Override        public <R,D> R accept(TreeVisitor<R,D> v, D d) {            return v.visitBinary(this, d);        }	@Override        public int getTag() {            return opcode;        }    }    /**     * A type cast.     */    public static class JCTypeCast extends JCExpression implements TypeCastTree {        public JCTree clazz;        public JCExpression expr;        protected JCTypeCast(JCTree clazz, JCExpression expr) {            this.clazz = clazz;            this.expr = expr;        }        @Override        public void accept(Visitor v) { v.visitTypeCast(this); }        public Kind getKind() { return Kind.TYPE_CAST; }        public JCTree getType() { return clazz; }        public JCExpression getExpression() { return expr; }        @Override        public <R,D> R accept(TreeVisitor<R,D> v, D d) {            return v.visitTypeCast(this, d);        }	@Override        public int getTag() {            return TYPECAST;        }    }    /**     * A type test.     */    public static class JCInstanceOf extends JCExpression implements InstanceOfTree {        public JCExpression expr;        public JCTree clazz;        protected JCInstanceOf(JCExpression expr, JCTree clazz) {            this.expr = expr;            this.clazz = clazz;        }        @Override        public void accept(Visitor v) { v.visitTypeTest(this); }        public Kind getKind() { return Kind.INSTANCE_OF; }        public JCTree getType() { return clazz; }        public JCExpression getExpression() { return expr; }        @Override        public <R,D> R accept(TreeVisitor<R,D> v, D d) {            return v.visitInstanceOf(this, d);        }        @Override        public int getTag() {            return TYPETEST;        }    }    /**     * An array selection     */    public static class JCArrayAccess extends JCExpression implements ArrayAccessTree {        public JCExpression indexed;        public JCExpression index;        protected JCArrayAccess(JCExpression indexed, JCExpression index) {            this.indexed = indexed;            this.index = index;        }        @Override        public void accept(Visitor v) { v.visitIndexed(this); }        public Kind getKind() { return Kind.ARRAY_ACCESS; }        public JCExpression getExpression() { return indexed; }        public JCExpression getIndex() { return index; }        @Override        public <R,D> R accept(TreeVisitor<R,D> v, D d) {            return v.visitArrayAccess(this, d);        }        @Override        public int getTag() {            return INDEXED;        }    }    /**     * Selects through packages and classes     * @param selected selected Tree hierarchie     * @param selector name of field to select thru     * @param sym symbol of the selected class     */

⌨️ 快捷键说明

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