in cayenne/src/main/java/org/apache/cayenne/exp/parser/ExpressionParser.java [2018:2108]
final public void customOperator() throws ParseException {/*@bgen(jjtree) CustomOperator */
ASTCustomOperator jjtn000 = new ASTCustomOperator(JJTCUSTOMOPERATOR);
boolean jjtc000 = true;
jjtree.openNodeScope(jjtn000);
try {
jj_consume_token(OPERATOR);
jj_consume_token(16);
stringLiteral();
label_11:
while (true) {
switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
case 19:{
;
break;
}
default:
jj_la1[36] = jj_gen;
break label_11;
}
jj_consume_token(19);
switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
case CONCAT:
case SUBSTRING:
case TRIM:
case LOWER:
case UPPER:
case SINGLE_QUOTED_STRING:
case DOUBLE_QUOTED_STRING:{
stringExpression();
break;
}
case 16:
case 25:
case 26:
case 28:
case LENGTH:
case LOCATE:
case ABS:
case SQRT:
case MOD:
case YEAR:
case MONTH:
case WEEK:
case DAY_OF_YEAR:
case DAY:
case DAY_OF_MONTH:
case DAY_OF_WEEK:
case HOUR:
case MINUTE:
case SECOND:
case FUNCTION:
case OPERATOR:
case AGGREGATE:
case 70:
case 71:
case 72:
case 73:
case 74:
case PROPERTY_PATH:
case INT_LITERAL:
case FLOAT_LITERAL:{
numericExpression();
break;
}
default:
jj_la1[37] = jj_gen;
jj_consume_token(-1);
throw new ParseException();
}
}
jj_consume_token(17);
} catch (Throwable jjte000) {
if (jjtc000) {
jjtree.clearNodeScope(jjtn000);
jjtc000 = false;
} else {
jjtree.popNode();
}
if (jjte000 instanceof RuntimeException) {
{if (true) throw (RuntimeException)jjte000;}
}
if (jjte000 instanceof ParseException) {
{if (true) throw (ParseException)jjte000;}
}
{if (true) throw (Error)jjte000;}
} finally {
if (jjtc000) {
jjtree.closeNodeScope(jjtn000, true);
}
}
}