in bval-jsr/src/main/java/org/apache/bval/jsr/util/PathNavigation.java [195:222]
private static void parse(CharSequence path, PathPosition pos) throws Exception {
int len = path.length();
boolean sep = true;
while (pos.getIndex() < len) {
int here = pos.getIndex();
char c = path.charAt(here);
switch (c) {
case ']':
Exceptions.raise(IllegalStateException::new, "Position %s: unexpected '%s'", here, c);
case '[':
handleIndex(path, pos.next());
break;
case '.':
Exceptions.raiseIf(sep, IllegalStateException::new,
"Position %s: expected property, index/key, or end of expression", here);
sep = true;
pos.next();
// fall through:
default:
Exceptions.raiseUnless(sep, IllegalStateException::new,
"Position %s: expected property path separator, index/key, or end of expression", here);
pos.handleProperty(parseProperty(path, pos));
}
sep = false;
}
}