/** * Gets the string literal */ private String getLiteral(SimpleNode referenceNode) { if (referenceNode.jjtGetNumChildren() != 1) { log.error("Reference node (literal) had unexpected number of children: " + referenceNode.jjtGetNumChildren()); throw new IllegalArgumentException("Problem parsing query"); } return referenceNode.jjtGetChild(0).image; }
private void childrenAccept(SimpleNode node, ParserVisitor visitor, Object data) { if (maxChildNodes > 0 && node.jjtGetNumChildren() > maxChildNodes) { output.writeLine(data + "(Showing " + maxChildNodes + " of " + node.jjtGetNumChildren() + " child nodes)"); for (int i = 0; i < maxChildNodes; i++) node.jjtGetChild(i).jjtAccept(visitor, data); } else { node.childrenAccept(this, data); } }
equal = false; return "Classes differ: " + node1.getClass().getSimpleName() + " vs " + node2.getClass().getSimpleName(); } else if (!equal(node1.jjtGetValue(), node2.jjtGetValue())) { equal = false; return ("Node values differ: " + node1.jjtGetValue() + " vs " + node2.jjtGetValue()); } else if (node1 instanceof JexlNode && !equal(((JexlNode) node1).image, ((JexlNode) node2).image)) { equal = false; return ("Node images differ: " + ((JexlNode) node1).image + " vs " + ((JexlNode) node2).image); } else if (node1.jjtGetNumChildren() > 0) { List<SimpleNode> list1 = listChildren(node1); List<SimpleNode> list2 = listChildren(node2); SimpleNode child2 = list2.get(i); equal = true; reason = child1.jjtAccept(this, child2); if (equal) { // equal may be made false by child
public String toString(String prefix) { return prefix + toString(); }
@Override public Object visit(SimpleNode node, Object data) { node.childrenAccept(this, data); return data; }
@Override public Object visit(SimpleNode node, Object data) { STATE state = STATE.IGNORABLE; if (output != null) { output.writeLine(data + node.toString() + " -> " + state); } return state; }
/** * Gets the Identity of an expression eg. SOURCE */ private String getIdentity(SimpleNode referenceNode) { if (referenceNode.jjtGetNumChildren() != 1) { log.error("Reference node (identity) had unexpected number of children: " + referenceNode.jjtGetNumChildren()); throw new IllegalArgumentException("Problem parsing query"); } return referenceNode.jjtGetChild(0).image.toUpperCase(); }
public Object visit(SimpleNode node, Object data) { output.writeLine(data + node.toString()); childrenAccept(node, this, data + PREFIX); return null; }
private List<SimpleNode> listChildren(SimpleNode node) { List<SimpleNode> list = new ArrayList<>(); for (int i = 0; i < node.jjtGetNumChildren(); i++) { list.add(node.jjtGetChild(i)); } boolean changed = true; List<SimpleNode> newList = new ArrayList<>(); while (changed) { changed = false; for (SimpleNode child : list) { if ((child.getClass().equals(ASTReference.class) && (child.jjtGetNumChildren() == 1)) || (child.getClass().equals(ASTReferenceExpression.class) && (child.jjtGetNumChildren() == 1)) || (child.getClass().equals(ASTOrNode.class) && ((child.jjtGetNumChildren() == 1) || node.getClass().equals(ASTOrNode.class))) || (child.getClass().equals(ASTAndNode.class) && ((child.jjtGetNumChildren() == 1) || node.getClass().equals(ASTAndNode.class)))) { for (int j = 0; j < child.jjtGetNumChildren(); j++) { newList.add(child.jjtGetChild(j)); } changed = true; } else { newList.add(child); } } List<SimpleNode> temp = newList; newList = list; list = temp; newList.clear(); } return list; }
private Object visitExpresionNode(SimpleNode node, String operator) { int numChildren = node.jjtGetNumChildren(); String identifier = getIdentity(node.jjtGetChild(0)); String literal = getLiteral(node.jjtGetChild(1)); List<IdentityContext> contexts = new ArrayList<>();
int num = node.jjtGetNumChildren(); for (int n = 0; n < num; n++) { SimpleNode child = node.jjtGetChild(n); if (0 < child.jjtGetNumChildren()) { if (!(child instanceof ASTReference || child instanceof ASTReferenceExpression)) {