+++ /dev/null
-package IR.Tree;
-
-public class LoopNode extends BlockStatementNode {
- BlockNode initializer;
- ExpressionNode condition;
- BlockNode update;
- BlockNode body;
- int type=0;
- public static int FORLOOP=1;
- public static int WHILELOOP=2;
- public static int DOWHILELOOP=3;
-
- public LoopNode(BlockNode initializer,ExpressionNode condition, BlockNode update, BlockNode body) {
- this.initializer=initializer;
- this.condition=condition;
- this.update=update;
- this.body=body;
- initializer.setStyle(BlockNode.EXPRLIST);
- update.setStyle(BlockNode.EXPRLIST);
- type=FORLOOP;
- }
-
- public LoopNode(ExpressionNode condition, BlockNode body, int type) {
- this.condition=condition;
- this.body=body;
- this.type=type;
- }
-
- public BlockNode getInitializer() {
- return initializer;
- }
-
- public ExpressionNode getCondition() {
- return condition;
- }
-
- public BlockNode getUpdate() {
- return update;
- }
-
- public BlockNode getBody() {
- return body;
- }
-
- public String printNode(int indent) {
- if (type==FORLOOP) {
- return "for("+initializer.printNode(0)+";"+condition.printNode(0)+
- ";"+update.printNode(0)+") "+body.printNode(indent)+"\n";
- } else if (type==WHILELOOP) {
- return "while("+condition.printNode(0)+") "+body.printNode(indent+INDENT)+"\n";
- } else if (type==DOWHILELOOP) {
- return "do "+ body.printNode(indent+INDENT)+
- "while("+condition.printNode(0)+")\n";
- } else throw new Error();
- }
-
- public int getType() {
- return type;
- }
-
- public int kind() {
- return Kind.LoopNode;
- }
-}