@Override public Value evaluate(ParseSession session) { return BaseExprParser.this.evaluateProperty(session, target.evaluate(session), propertyName); }
@Override public Class<?> getType(ParseSession session) { return type != null ? type : arg.getType(session); } };
@Override public Class<?> getType(ParseSession session) { return node.getType(session); } };
@Override public Class<?> getType(ParseSession session) { return lhs.getType(session); } };
@Override public Value evaluate(ParseSession session) { return node.evaluate(session).xxcrement(session, "pre-" + operation, increment); }
@Override public final Value apply(ParseSession session, Object info) { final Node[] params = (Node[])info; final Value[] values = new Value[params.length]; for (int i = 0; i < params.length; i++) values[i] = params[i].evaluate(session); return this.apply(session, values); }
@Override public Class<?> getType(ParseSession session) { return type != null ? type : node.getType(session); } };
@Override public Value evaluate(ParseSession session) { return node.evaluate(session).xxcrement(session, "post-" + operation, increment); }
@Override public Class<?> getType(ParseSession session) { final Class<?> arrayType = target.getType(session); return arrayType.isArray() ? arrayType.getComponentType() : Object.class; } };
private static Object createEmpty(ParseSession session, Class<?> elemType, List<Node> dims) { final int length = dims.get(0).evaluate(session).checkIntegral(session, "array creation"); final Object array = Array.newInstance(elemType, length); final List<Node> remainingDims = dims.subList(1, dims.size()); if (!remainingDims.isEmpty() && remainingDims.get(0) != null) { for (int i = 0; i < length; i++) Array.set(array, i, EmptyArrayNode.createEmpty(session, elemType.getComponentType(), remainingDims)); } return array; } }
private Class<?> getPropertyType(ParseSession session, Node node, final String name) { final Class<?> cl = node.getType(session); final BeanInfo beanInfo; try {
@Override public Value evaluate(ParseSession session) { return op.apply(session, arg.evaluate(session)); }
prefix = ""; throw new ParseException(ctx) .addCompletions(AtomExprParser.getInstanceMemberCompletions(node.getType(session), prefix));
private static Object createLiteral(ParseSession session, Class<?> elemType, List<?> values) { final int length = values.size(); final Object array = Array.newInstance(elemType, length); for (int i = 0; i < length; i++) { if (elemType.isArray()) Array.set(array, i, LiteralArrayNode.createLiteral(session, elemType.getComponentType(), (List<?>)values.get(i))); else { try { Array.set(array, i, ((Node)values.get(i)).evaluate(session).get(session)); } catch (Exception e) { throw new EvalException("error setting array value: " + e, e); } } } return array; }
private Object resolveAndEvaluate(ParseSession session, TypeInferringNode node, Class<?> type) { return node.resolve(session, TypeToken.of(type)).evaluate(session).get(session); }