jctree.java

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

JAVA
2,048
字号
        public void accept(Visitor v) { v.visitWhileLoop(this); }        public Kind getKind() { return Kind.WHILE_LOOP; }        public JCExpression getCondition() { return cond; }        public JCStatement getStatement() { return body; }        @Override        public <R,D> R accept(TreeVisitor<R,D> v, D d) {            return v.visitWhileLoop(this, d);        }        @Override        public int getTag() {            return WHILELOOP;        }    }    /**     * A for loop.     */    public static class JCForLoop extends JCStatement implements ForLoopTree {        public List<JCStatement> init;        public JCExpression cond;        public List<JCExpressionStatement> step;        public JCStatement body;        protected JCForLoop(List<JCStatement> init,                          JCExpression cond,                          List<JCExpressionStatement> update,                          JCStatement body)        {            this.init = init;            this.cond = cond;            this.step = update;            this.body = body;        }        @Override        public void accept(Visitor v) { v.visitForLoop(this); }        public Kind getKind() { return Kind.FOR_LOOP; }        public JCExpression getCondition() { return cond; }        public JCStatement getStatement() { return body; }        public List<JCStatement> getInitializer() {            return init;        }        public List<JCExpressionStatement> getUpdate() {            return step;        }        @Override        public <R,D> R accept(TreeVisitor<R,D> v, D d) {            return v.visitForLoop(this, d);        }        @Override        public int getTag() {            return FORLOOP;        }    }    /**     * The enhanced for loop.     */    public static class JCEnhancedForLoop extends JCStatement implements EnhancedForLoopTree {        public JCVariableDecl var;        public JCExpression expr;        public JCStatement body;        protected JCEnhancedForLoop(JCVariableDecl var, JCExpression expr, JCStatement body) {            this.var = var;            this.expr = expr;            this.body = body;        }        @Override        public void accept(Visitor v) { v.visitForeachLoop(this); }        public Kind getKind() { return Kind.ENHANCED_FOR_LOOP; }        public JCVariableDecl getVariable() { return var; }        public JCExpression getExpression() { return expr; }        public JCStatement getStatement() { return body; }        @Override        public <R,D> R accept(TreeVisitor<R,D> v, D d) {            return v.visitEnhancedForLoop(this, d);        }        @Override        public int getTag() {            return FOREACHLOOP;        }    }    /**     * A labelled expression or statement.     */    public static class JCLabeledStatement extends JCStatement implements LabeledStatementTree {        public Name label;        public JCStatement body;        protected JCLabeledStatement(Name label, JCStatement body) {            this.label = label;            this.body = body;        }        @Override        public void accept(Visitor v) { v.visitLabelled(this); }        public Kind getKind() { return Kind.LABELED_STATEMENT; }        public Name getLabel() { return label; }        public JCStatement getStatement() { return body; }        @Override        public <R,D> R accept(TreeVisitor<R,D> v, D d) {            return v.visitLabeledStatement(this, d);        }        @Override        public int getTag() {            return LABELLED;        }    }    /**     * A "switch ( ) { }" construction.     */    public static class JCSwitch extends JCStatement implements SwitchTree {        public JCExpression selector;        public List<JCCase> cases;        protected JCSwitch(JCExpression selector, List<JCCase> cases) {            this.selector = selector;            this.cases = cases;        }        @Override        public void accept(Visitor v) { v.visitSwitch(this); }        public Kind getKind() { return Kind.SWITCH; }        public JCExpression getExpression() { return selector; }        public List<JCCase> getCases() { return cases; }        @Override        public <R,D> R accept(TreeVisitor<R,D> v, D d) {            return v.visitSwitch(this, d);        }        @Override        public int getTag() {            return SWITCH;        }    }    /**     * A "case  :" of a switch.     */    public static class JCCase extends JCStatement implements CaseTree {        public JCExpression pat;        public List<JCStatement> stats;        protected JCCase(JCExpression pat, List<JCStatement> stats) {            this.pat = pat;            this.stats = stats;        }        @Override        public void accept(Visitor v) { v.visitCase(this); }        public Kind getKind() { return Kind.CASE; }        public JCExpression getExpression() { return pat; }        public List<JCStatement> getStatements() { return stats; }        @Override        public <R,D> R accept(TreeVisitor<R,D> v, D d) {            return v.visitCase(this, d);        }        @Override        public int getTag() {            return CASE;        }    }    /**     * A synchronized block.     */    public static class JCSynchronized extends JCStatement implements SynchronizedTree {        public JCExpression lock;        public JCBlock body;        protected JCSynchronized(JCExpression lock, JCBlock body) {            this.lock = lock;            this.body = body;        }        @Override        public void accept(Visitor v) { v.visitSynchronized(this); }        public Kind getKind() { return Kind.SYNCHRONIZED; }        public JCExpression getExpression() { return lock; }        public JCBlock getBlock() { return body; }        @Override        public <R,D> R accept(TreeVisitor<R,D> v, D d) {            return v.visitSynchronized(this, d);        }        @Override        public int getTag() {            return SYNCHRONIZED;        }    }    /**     * A "try { } catch ( ) { } finally { }" block.     */    public static class JCTry extends JCStatement implements TryTree {        public JCBlock body;        public List<JCCatch> catchers;        public JCBlock finalizer;        protected JCTry(JCBlock body, List<JCCatch> catchers, JCBlock finalizer) {            this.body = body;            this.catchers = catchers;            this.finalizer = finalizer;        }        @Override        public void accept(Visitor v) { v.visitTry(this); }        public Kind getKind() { return Kind.TRY; }        public JCBlock getBlock() { return body; }        public List<JCCatch> getCatches() {            return catchers;        }        public JCBlock getFinallyBlock() { return finalizer; }        @Override        public <R,D> R accept(TreeVisitor<R,D> v, D d) {            return v.visitTry(this, d);        }        @Override        public int getTag() {            return TRY;        }    }    /**     * A catch block.     */    public static class JCCatch extends JCTree implements CatchTree {        public JCVariableDecl param;        public JCBlock body;        protected JCCatch(JCVariableDecl param, JCBlock body) {            this.param = param;            this.body = body;        }        @Override        public void accept(Visitor v) { v.visitCatch(this); }        public Kind getKind() { return Kind.CATCH; }        public JCVariableDecl getParameter() { return param; }        public JCBlock getBlock() { return body; }        @Override        public <R,D> R accept(TreeVisitor<R,D> v, D d) {            return v.visitCatch(this, d);        }        @Override        public int getTag() {            return CATCH;        }    }    /**     * A ( ) ? ( ) : ( ) conditional expression     */    public static class JCConditional extends JCExpression implements ConditionalExpressionTree {        public JCExpression cond;        public JCExpression truepart;        public JCExpression falsepart;        protected JCConditional(JCExpression cond,			      JCExpression truepart,			      JCExpression falsepart)	{            this.cond = cond;            this.truepart = truepart;            this.falsepart = falsepart;        }        @Override        public void accept(Visitor v) { v.visitConditional(this); }        public Kind getKind() { return Kind.CONDITIONAL_EXPRESSION; }        public JCExpression getCondition() { return cond; }        public JCExpression getTrueExpression() { return truepart; }        public JCExpression getFalseExpression() { return falsepart; }        @Override        public <R,D> R accept(TreeVisitor<R,D> v, D d) {            return v.visitConditionalExpression(this, d);        }        @Override        public int getTag() {            return CONDEXPR;        }    }    /**     * An "if ( ) { } else { }" block     */    public static class JCIf extends JCStatement implements IfTree {        public JCExpression cond;        public JCStatement thenpart;        public JCStatement elsepart;        protected JCIf(JCExpression cond,		     JCStatement thenpart,		     JCStatement elsepart)	{            this.cond = cond;            this.thenpart = thenpart;            this.elsepart = elsepart;        }        @Override        public void accept(Visitor v) { v.visitIf(this); }        public Kind getKind() { return Kind.IF; }        public JCExpression getCondition() { return cond; }        public JCStatement getThenStatement() { return thenpart; }        public JCStatement getElseStatement() { return elsepart; }        @Override        public <R,D> R accept(TreeVisitor<R,D> v, D d) {            return v.visitIf(this, d);        }        @Override        public int getTag() {            return IF;        }    }    /**     * an expression statement     * @param expr expression structure     */    public static class JCExpressionStatement extends JCStatement implements ExpressionStatementTree {        public JCExpression expr;        protected JCExpressionStatement(JCExpression expr)	{            this.expr = expr;        }        @Override        public void accept(Visitor v) { v.visitExec(this); }        public Kind getKind() { return Kind.EXPRESSION_STATEMENT; }        public JCExpression getExpression() { return expr; }        @Override        public <R,D> R accept(TreeVisitor<R,D> v, D d) {            return v.visitExpressionStatement(this, d);        }        @Override        public int getTag() {            return EXEC;        }    }    /**     * A break from a loop or switch.     */    public static class JCBreak extends JCStatement implements BreakTree {        public Name label;        public JCTree target;        protected JCBreak(Name label, JCTree target) {            this.label = label;            this.target = target;        }        @Override        public void accept(Visitor v) { v.visitBreak(this); }        public Kind getKind() { return Kind.BREAK; }        public Name getLabel() { return label; }        @Override        public <R,D> R accept(TreeVisitor<R,D> v, D d) {            return v.visitBreak(this, d);        }        @Override        public int getTag() {            return BREAK;        }    }    /**     * A continue of a loop.     */    public static class JCContinue extends JCStatement implements ContinueTree {        public Name label;        public JCTree target;        protected JCContinue(Name label, JCTree target) {            this.label = label;            this.target = target;        }        @Override        public void accept(Visitor v) { v.visitContinue(this); }        public Kind getKind() { return Kind.CONTINUE; }        public Name getLabel() { return label; }        @Override        public <R,D> R accept(TreeVisitor<R,D> v, D d) {            return v.visitContinue(this, d);        }        @Override        public int getTag() {            return CONTINUE;        }    }    /**     * A return statement.     */    public static class JCReturn extends JCStatement implements ReturnTree {        public JCExpression expr;        protected JCReturn(JCExpression expr) {            this.expr = expr;        }        @Override        public void accept(Visitor v) { v.visitReturn(this); }        public Kind getKind() { return Kind.RETURN; }        public JCExpression getExpression() { return expr; }        @Override        public <R,D> R accept(TreeVisitor<R,D> v, D d) {            return v.visitReturn(this, d);        }        @Override        public int getTag() {            return RETURN;        }    }    /**     * A throw statement.

⌨️ 快捷键说明

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