@Override public Object visit(ASTAndNode node, Object data) { ASTAndNode newNode = new ASTAndNode(ParserTreeConstants.JJTANDNODE); newNode.image = node.image; for (int i = 0; i < node.jjtGetNumChildren(); i++) { Node newChild = (Node) node.jjtGetChild(i).jjtAccept(this, data); newNode.jjtAddChild(newChild, newIndex); newIndex++; newNode.jjtAddChild(newChild, newIndex); newIndex++; switch (newNode.jjtGetNumChildren()) { case 0: return null; case 1: JexlNode child = newNode.jjtGetChild(0); JexlNodes.promote(newNode, child); return child;
@Override public Object visit(ASTAndNode node, Object data) { node.childrenAccept(this, data); return data; }
public Object visit(ASTAndNode node, Object data) { StringBuilder sb = (StringBuilder) data; int numChildren = node.jjtGetNumChildren(); JexlNode parent = node.jjtGetParent(); boolean wrapIt = false; if (!(parent instanceof ASTReferenceExpression || parent instanceof ASTJexlScript || parent instanceof ASTAndNode || numChildren == 0)) { wrapIt = true; sb.append("("); } int lastsize = sb.length(); for (int i = 0; i < numChildren; i++) { if (sb.length() != lastsize) { sb.append(" && "); } lastsize = sb.length(); node.jjtGetChild(i).jjtAccept(this, sb); } if (wrapIt) sb.append(")"); return data; }
@Override public Object visit(ASTAndNode node, Object data) { ASTAndNode newNode = new ASTAndNode(ParserTreeConstants.JJTANDNODE); newNode.image = node.image; visit(node, newNode, data); switch (newNode.jjtGetNumChildren()) { case 0: return null; case 1: JexlNode child = newNode.jjtGetChild(0); JexlNodes.promote(newNode, child); return child; default: return newNode; } }
@Override public Object visit(ASTAndNode node, Object data) { JexlNode returnNode = null; List<JexlNode> rewrittenNodes = Lists.newArrayList(); for (int i = 0; i < node.jjtGetNumChildren(); i++) { JexlNode child = node.jjtGetChild(i); JexlNode rewrittenNode = (JexlNode) child.jjtAccept(this, data); rewrittenNodes.add(rewrittenNode); } returnNode = JexlNodeFactory.createAndNode(rewrittenNodes); return returnNode; }
for (int i = 0; i < node.jjtGetNumChildren(); i++) { JexlNode child = node.jjtGetChild(i); JexlNode newAnd = new ASTAndNode(ParserTreeConstants.JJTANDNODE); newAnd.jjtSetParent(node.jjtGetParent()); Iterator<Tuple2<JexlNode,Cost>> tupleIter = costEstimates.iterator();
/** * Wrap collection of JexlNodes into an ASTAndNode * * @param children * @return */ public static JexlNode createAndNode(Iterable<? extends JexlNode> children) { return wrapChildren(new ASTAndNode(ParserTreeConstants.JJTANDNODE), children); }
/** {@inheritDoc} */ public Object visit(ASTAndNode node, Object data) { Object left = node.jjtGetChild(0).jjtAccept(this, data); try { boolean leftValue = arithmetic.toBoolean(left); if (!leftValue) { return Boolean.FALSE; } } catch (RuntimeException xrt) { throw new JexlException(node.jjtGetChild(0), "boolean coercion error", xrt); } Object right = node.jjtGetChild(1).jjtAccept(this, data); try { boolean rightValue = arithmetic.toBoolean(right); if (!rightValue) { return Boolean.FALSE; } } catch (ArithmeticException xrt) { throw new JexlException(node.jjtGetChild(1), "boolean coercion error", xrt); } return Boolean.TRUE; }
ASTAndNode onlyRangeNodes = new ASTAndNode(ParserTreeConstants.JJTANDNODE); onlyRangeNodes.jjtAddChild(range.getValue().get(i), i);
protected JexlNode optimizeTree(JexlNode currentNode, JexlNode newNode, Object data) { if ((currentNode instanceof ASTAndNode) && hasChildOr(currentNode)) { ASTAndNode andNode = new ASTAndNode(ParserTreeConstants.JJTANDNODE); andNode.image = currentNode.image; andNode.jjtSetParent(currentNode.jjtGetParent());
JexlNode newNode = (JexlNode) node.jjtGetChild(i).jjtAccept(this, null); newNode.jjtSetParent(andNode); andNode.jjtAddChild(newNode, andNode.jjtGetNumChildren());
@Override public Object visit(ASTAndNode node, Object data) { if (node.jjtGetNumChildren() > 1) {
public Object visit(ASTAndNode node, Object data) { output.writeLine(data + node.toString()); childrenAccept(node, this, data + PREFIX); return null; }
} else { JexlNodes.swap(lastAnd.jjtGetParent(), lastAnd, newOr);
@Override public Object visit(ASTAndNode node, Object data) { if (traverse(data, fullTraversal)) { int i = 0; while (traverse(data, fullTraversal) && i < node.jjtGetNumChildren()) { data = node.jjtGetChild(i).jjtAccept(this, data); i++; } } return data; }
/** * Wrap collection of JexlNodes into an ASTAndNode * * @param children * @return */ public static JexlNode createUnwrappedAndNode(Iterable<? extends JexlNode> children) { return setChildren(new ASTAndNode(ParserTreeConstants.JJTANDNODE), children); }
JexlNode left = node.jjtGetChild(0); JexlNode right = node.jjtGetChild(1); if (left instanceof ASTLENode || left instanceof ASTLTNode) { JexlNode temp = left;
ASTAndNode rangeNodes = new ASTAndNode(ParserTreeConstants.JJTANDNODE); rangeNodes.jjtAddChild(range.getValue().get(i), i);
JexlNode newNode = (JexlNode) node.jjtGetChild(i).jjtAccept(this, null); newNode.jjtSetParent(andNode); andNode.jjtAddChild(newNode, andNode.jjtGetNumChildren());
@Override public Object visit(ASTAndNode node, Object data) { JexlNode retnode = (JexlNode) (super.visit(node, data)); // if only one member remaining, then return only that if (node.jjtGetNumChildren() == 0) { retnode = null; } else if (retnode.jjtGetNumChildren() == 1) { retnode = retnode.jjtGetChild(0); } return retnode; }