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