private static void parse()

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;
        }
    }