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 + -
显示快捷键?