in java/commons/src/main/java/com/epam/deltix/data/connectors/commons/SymbolMapper.java [99:172]
private Symbol(final String symbol) {
final StringBuilder fromSymbol = new StringBuilder();
final StringBuilder toSymbol = new StringBuilder();
int state = INITIAL_STATE;
for (int i = 0; i < symbol.length(); i++) {
final char c = symbol.charAt(i);
switch (state) {
case INITIAL_STATE:
switch (c) {
case '\\':
state = ESCAPING_IN_FROM_STATE;
break;
case '=':
throw new IllegalArgumentException("Unexpected '=' at " + i);
default:
state = FROM_STATE;
fromSymbol.append(c);
break;
}
break;
case FROM_STATE:
switch (c) {
case '\\':
state = ESCAPING_IN_FROM_STATE;
break;
case '=':
state = TO_STATE;
break;
default:
fromSymbol.append(c);
break;
}
break;
case ESCAPING_IN_FROM_STATE:
switch (c) {
case '\\':
case '=':
state = FROM_STATE;
fromSymbol.append(c);
break;
default:
throw new IllegalArgumentException("Unexpected '" + c + "' at " + i);
}
break;
case TO_STATE:
switch (c) {
case '\\':
state = ESCAPING_IN_TO_STATE;
break;
case '=':
throw new IllegalArgumentException("Unexpected '=' at " + i);
default:
toSymbol.append(c);
break;
}
break;
case ESCAPING_IN_TO_STATE:
switch (c) {
case '\\':
case '=':
state = TO_STATE;
toSymbol.append(c);
break;
default:
throw new IllegalArgumentException("Unexpected '" + c + "' at " + i);
}
break;
}
}
from = fromSymbol.toString().trim();
to = toSymbol.toString().trim();
}