private String parse()

in src/org/jetbrains/ether/dependencyView/PackageNameSelector.java [170:220]


    private String parse() {
        final StringBuilder b = new StringBuilder();
        int state = 0;

        while (true) {
            final char c = symbol();
            switch (c) {
                case 0: {
                    return "";
                }

                default: {
                    switch (state) {
                        case 0: // Initial state
                            if (Character.isLetter(c)) {
                                b.append(c);
                                state = 1;
                            }
                            break;

                        case 1: // Identifier
                            if (Character.isLetter(c)) {
                                b.append(c);
                            } else if (Character.isWhitespace(c)) {
                                final String ident = b.toString();
                                b.setLength(0);
                                if (ident.equals("package")) {
                                    state = 2;
                                } else if (ident.equals("import")) {
                                    return "";
                                }
                            } else {
                                state = 0;
                            }
                            break;

                        case 2: // Post "package<whitespace>
                            if (Character.isWhitespace(c)) {

                            } else if (c == '.') {
                                b.append(File.separatorChar);
                            } else if (c == ';') {
                                return b.toString();
                            } else {
                                b.append(c);
                            }
                    }
                }
            }
        }
    }