/** * Returns the supplied string as an expression. * * <p>This utility function attempts to identify the supplied string as an expression. It tries in * turn each of the known sub-classes until finally, if none can be recognized, an exception is * thrown. This function is not immune to mistakenly mis-classifying an expression. It is the * responsibility of the concrete Exrpession classes to ensure that syntactic integrity is * maintained with respect to potential cases of mistaken identity. * * @param raw The candidate expression * @throws IllegalArgumentException If no valid expression can be found */ static Expression valueOf(String raw) throws IllegalArgumentException { Expression exp = null; /* * TODO It would be better if subclasses registered, * but this hard coded list will do until such a time */ if ((exp = KVOpExpression.valueOf(raw)) == null) if ((exp = KVExpression.valueOf(raw)) == null) exp = KExpression.valueOf(raw); if (exp == null) throw new IllegalArgumentException("unrecognized expression: " + raw); return (exp); }