@Override public Object visit(ASTIdentifier node, Object data) { JexlNode newNode; String fieldName = JexlASTHelper.getIdentifier(node); Collection<String> aliases = Sets.newLinkedHashSet(getAliasesForField(fieldName)); // de-dupe Set<ASTIdentifier> nodes = Sets.newLinkedHashSet(); if (aliases.isEmpty()) { return super.visit(node, data); } for (String alias : aliases) { ASTIdentifier newKid = new ASTIdentifier(ParserTreeConstants.JJTIDENTIFIER); newKid.image = JexlASTHelper.rebuildIdentifier(alias); nodes.add(newKid); } if (nodes.size() == 1) { newNode = JexlNodeFactory.wrap(nodes.iterator().next()); } else { newNode = JexlNodeFactory.createOrNode(nodes); } newNode.jjtSetParent(node.jjtGetParent()); for (int i = 0; i < node.jjtGetNumChildren(); i++) { newNode.jjtAddChild((Node) node.jjtGetChild(i).jjtAccept(this, data), i); } return newNode; }
@Override @SuppressWarnings("unchecked") public Object visit(ASTIdentifier node, Object data) { // if a field set was passed in, then check for existence before upcasing (@see visit(ASTFunctionNode, Object)) if (data == null || ((Set<String>) data).contains(node.image)) { // don't uppercase an identifier under a ASTMethodNode, it is the method's name if (node.jjtGetParent() instanceof ASTMethodNode == false) { node.image = node.image.toUpperCase(); } } node.childrenAccept(this, data); return data; }
/** * Checks whether an identifier is a local variable or argument, ie stored in a register. * @param identifier the identifier * @param image the identifier image * @return the image */ public String checkVariable(ASTIdentifier identifier, String image) { if (frame != null) { Integer register = frame.getRegister(image); if (register != null) { identifier.setRegister(register.intValue()); } } return image; }
public static ASTIdentifier makeIdentifierWithImage(String image) { ASTIdentifier id = new ASTIdentifier(ParserTreeConstants.JJTIDENTIFIER); id.image = image; return id; }
/** * Create an assignment node * * @param name * @param value * @return the assignment node */ public static ASTAssignment createAssignment(String name, String value) { ASTAssignment assignNode = new ASTAssignment(ParserTreeConstants.JJTASSIGNMENT); ASTReference refNode2 = new ASTReference(ParserTreeConstants.JJTREFERENCE); refNode2.jjtSetParent(assignNode); assignNode.jjtAddChild(refNode2, 0); ASTIdentifier idNode = new ASTIdentifier(ParserTreeConstants.JJTIDENTIFIER); idNode.image = name; idNode.jjtSetParent(refNode2); refNode2.jjtAddChild(idNode, 0); ASTStringLiteral literalNode = new ASTStringLiteral(ParserTreeConstants.JJTSTRINGLITERAL); literalNode.jjtSetParent(assignNode); literalNode.image = value; assignNode.jjtAddChild(literalNode, 1); return assignNode; } }
ASTIdentifier jjtn000 = new ASTIdentifier(JJTIDENTIFIER); boolean jjtc000 = true; jjtree.openNodeScope(jjtn000); jjtc000 = false; jjtreeCloseNodeScope(jjtn000); jjtn000.image = t.image; jjtn000.setRegister(t.image); break; default:
/** {@inheritDoc} */ public Object visit(ASTIdentifier node, Object data) { if (isCancelled()) { throw new JexlException.Cancel(node); } String name = node.image; if (data == null) { int register = node.getRegister(); if (register >= 0) { return registers[register]; } Object value = context.get(name); if (value == null && !(node.jjtGetParent() instanceof ASTReference) && !context.has(name) && !isTernaryProtected(node)) { JexlException xjexl = new JexlException.Variable(node, name); return unknownVariable(xjexl); } return value; } else { return getAttribute(data, name, node); } }
if (((ASTIdentifier) desc).getRegister() < 0) { List<String> di = new ArrayList<String>(1); di.add(desc.image); if (i == 0 && (((ASTIdentifier) child).getRegister() < 0)) { var.add(child.image); if (((ASTIdentifier) child).getRegister() < 0) { var.add(child.image);
private static boolean isParentAFilterFunction(final ASTIdentifier node) { JexlNode parent = node.jjtGetParent(); boolean isParentAFilterFunction = false; for (int i = 0; (null != parent) && (i < 7); i++) { if (parent instanceof ASTFunctionNode) { final ASTFunctionNode function = (ASTFunctionNode) parent; int children = function.jjtGetNumChildren(); if (children > 0) { final JexlNode child = function.jjtGetChild(0); if ((null != child) && FILTER.equals(child.image)) { isParentAFilterFunction = true; parent = null; } else { parent = parent.jjtGetParent(); } } else { parent = parent.jjtGetParent(); } } else { parent = parent.jjtGetParent(); } } return isParentAFilterFunction; }
/** * Like {@link #buildUntypedNewNode(JexlNode, ASTIdentifier, String)} except it does not wrap {@code literal} in an {@link ASTReference} * * @param newNode * @param identifier * @param literal * @return */ protected static JexlNode buildUntypedNewLiteralNode(JexlNode newNode, ASTIdentifier identifier, JexlNode literal) { ASTReference identifierReference = new ASTReference(ParserTreeConstants.JJTREFERENCE); identifierReference.jjtAddChild(identifier, 0); identifier.jjtSetParent(identifierReference); newNode.jjtAddChild(identifierReference, 0); newNode.jjtAddChild(literal, 1); identifierReference.jjtSetParent(newNode); literal.jjtSetParent(newNode); return newNode; }
@Override public Object visit(ASTIdentifier node, Object data) { node.childrenAccept(this, data); return data; }
@Override public Object visit(ASTIdentifier node, Object data) { STATE state = STATE.IGNORABLE; if (output != null) { output.writeLine(data + node.toString() + " -> " + state); } return state; }
public static ASTIdentifier buildIdentifier(String fieldName) { ASTIdentifier identifier = new ASTIdentifier(ParserTreeConstants.JJTIDENTIFIER); // When the fieldName starts with an invalid character, add the prefix // onto it identifier.image = JexlASTHelper.rebuildIdentifier(fieldName); return identifier; }
assignNode.jjtAddChild(refNode2, 0); ASTIdentifier idNode = new ASTIdentifier(ParserTreeConstants.JJTIDENTIFIER); idNode.image = name; idNode.jjtSetParent(refNode2); refNode2.jjtAddChild(idNode, 0);
|| (numChildren == 1 && node.jjtGetChild(0) instanceof ASTIdentifier && ((ASTIdentifier) node.jjtGetChild(0)).getRegister() >= 0))) { JexlException xjexl = propertyName != null ? new JexlException.Property(node, propertyName)
protected static JexlNode buildUntypedNewNode(JexlNode newNode, JexlNode literal, ASTIdentifier identifier) { ASTReference literalReference = new ASTReference(ParserTreeConstants.JJTREFERENCE), identifierReference = new ASTReference( ParserTreeConstants.JJTREFERENCE); literalReference.jjtAddChild(literal, 0); literal.jjtSetParent(literalReference); identifierReference.jjtAddChild(identifier, 0); identifier.jjtSetParent(identifierReference); newNode.jjtAddChild(literalReference, 0); newNode.jjtAddChild(identifierReference, 1); identifierReference.jjtSetParent(newNode); literalReference.jjtSetParent(newNode); return newNode; }
public Object visit(ASTIdentifier node, Object data) { StringBuilder sb = (StringBuilder) data; // We want to remove the $ if present and only replace it when necessary String fieldName = JexlASTHelper.rebuildIdentifier(JexlASTHelper.deconstructIdentifier(node.image)); sb.append(fieldName); node.childrenAccept(this, sb); return sb; }
public Object visit(ASTIdentifier node, Object data) { output.writeLine(data + node.toString() + ":" + node.image); childrenAccept(node, this, data + PREFIX); return null; }
/** * Create a new ASTGENode from the given field name and value * * @param namespace * @param function * @param field * @param args * @return */ public static JexlNode buildFunctionNode(String namespace, String function, String field, Object... args) { ASTFunctionNode newNode = new ASTFunctionNode(ParserTreeConstants.JJTFUNCTIONNODE); JexlNodes.ensureCapacity(newNode, args.length + 3); int childIndex = 0; ASTIdentifier nsNode = new ASTIdentifier(ParserTreeConstants.JJTIDENTIFIER); nsNode.image = namespace; newNode.jjtAddChild(nsNode, childIndex++); ASTIdentifier functionNode = new ASTIdentifier(ParserTreeConstants.JJTIDENTIFIER); functionNode.image = function; newNode.jjtAddChild(functionNode, childIndex++); ASTIdentifier fieldNode = new ASTIdentifier(ParserTreeConstants.JJTIDENTIFIER); fieldNode.image = field; newNode.jjtAddChild(fieldNode, childIndex++); for (int i = 0; i < args.length; i++) { ASTStringLiteral literal = new ASTStringLiteral(ParserTreeConstants.JJTSTRINGLITERAL); literal.image = args[i].toString(); newNode.jjtAddChild(JexlNodeFactory.wrap(literal), childIndex++); } return JexlNodeFactory.wrap(newNode); }
int register = loopVariable.getRegister();