class InstructionFinder {
/**
* Replace symbolic names of instructions with the appropiate character and
* remove all white space from string. Meta characters such as +, * are
* ignored.
*
* @param pattern
* The pattern to compile
* @return translated regular expression string
*/
private static String compilePattern( String pattern ) {
//Bug: BCEL-77 - Instructions are assumed to be english, to avoid odd Locale issues
String lower = pattern.toLowerCase(Locale.ENGLISH);
StringBuilder buf = new StringBuilder();
int size = pattern.length();
for (int i = 0; i < size; i++) {
char ch = lower.charAt(i);
if (Character.isLetterOrDigit(ch)) {
StringBuilder name = new StringBuilder();
while ((Character.isLetterOrDigit(ch) || ch == '_') && i < size) {
name.append(ch);
if (++i < size) {
ch = lower.charAt(i);
} else {
break;
}
}
i--;
buf.append(mapName(name.toString()));
} else if (!Character.isWhitespace(ch)) {
buf.append(ch);
}
}
return buf.toString();
}
}