}
String parseString(final String sql, final ParsedStatement stmt) throws IllegalArgumentException {
StringBuilder b = new StringBuilder();
ColonStatementLexer lexer = new ColonStatementLexer(new ANTLRStringStream(sql));
Token t = lexer.nextToken();
while (t.getType() != ColonStatementLexer.EOF) {
switch(t.getType()) {
case LITERAL:
b.append(t.getText());
break;
case NAMED_PARAM:
stmt.addNamedParamAt(t.getText().substring(1, t.getText().length()));
b.append("?");
break;
case QUOTED_TEXT:
b.append(t.getText());
break;
case DOUBLE_QUOTED_TEXT:
b.append(t.getText());
break;
case POSITIONAL_PARAM:
b.append("?");
stmt.addPositionalParamAt();
break;
case ESCAPED_TEXT:
b.append(t.getText().substring(1));
break;
default:
throw new IllegalArgumentException("Not a valid expression");
}
t = lexer.nextToken();
}
return b.toString();
}