@Override public AstNode whileLoop(AstNode condition, AstNode body) { WhileLoop w = new WhileLoop(); w.setCondition(condition); w.setBody(body); return w; }
/** * @param node The node we want to have wrapped. * @return The (new) node parent (the block probably) */ private AstNode makeSureBlockExistsAround(AstNode node) { AstNode parent = node.getParent(); if (parent instanceof IfStatement) { /* the parent is an if and there are no braces, so we should make a new block */ IfStatement i = (IfStatement) parent; /* replace the if or the then, depending on what the current node is */ if (i.getThenPart().equals(node)) { i.setThenPart(createBlockWithNode(node)); } else if (i.getElsePart() != null) { if (i.getElsePart().equals(node)) i.setElsePart(createBlockWithNode(node)); } } else if (parent instanceof WhileLoop) { /* the parent is a while and there are no braces, so we should make a new block */ /* I don't think you can find this in the real world, but just to be sure */ WhileLoop w = (WhileLoop) parent; if (w.getBody().equals(node)) w.setBody(createBlockWithNode(node)); } else if (parent instanceof ForLoop) { /* the parent is a for and there are no braces, so we should make a new block */ /* I don't think you can find this in the real world, but just to be sure */ ForLoop f = (ForLoop) parent; if (f.getBody().equals(node)) f.setBody(createBlockWithNode(node)); } return node.getParent(); }