in scim-spec/scim-spec-schema/src/main/java/org/apache/directory/scim/spec/filter/Filter.java [70:91]
protected FilterExpression parseFilter(String filter) throws FilterParseException {
FilterLexer l = new FilterLexer(new ANTLRInputStream(filter));
FilterParser p = new FilterParser(new CommonTokenStream(l));
p.setBuildParseTree(true);
p.addErrorListener(new BaseErrorListener() {
@Override
public void syntaxError(Recognizer<?, ?> recognizer, Object offendingSymbol, int line, int charPositionInLine, String msg, RecognitionException e) {
throw new IllegalStateException("failed to parse at line " + line + ":" + charPositionInLine + " due to " + msg, e);
}
});
try {
ParseTree tree = p.filter();
ExpressionBuildingListener expListener = new ExpressionBuildingListener();
ParseTreeWalker.DEFAULT.walk(expListener, tree);
return expListener.getFilterExpression();
} catch (IllegalStateException e) {
throw new FilterParseException("Failed to parse filter: " + filter, e);
}
}