@@ -2149,6 +2149,22 @@ Expression Condition():
21492149 { return not?new NotExpression(result):result; }
21502150}
21512151
2152+ Expression LightCondition():
2153+ {
2154+ Expression result;
2155+ Token token;
2156+ boolean not = false;
2157+ }
2158+ {
2159+ [ <K_NOT> { not = true; }]
2160+ (
2161+ LOOKAHEAD(RegularCondition()) result=RegularCondition()
2162+ | result=SimpleExpression()
2163+ )
2164+
2165+ { return not?new NotExpression(result):result; }
2166+ }
2167+
21522168Expression RegularCondition() #RegularCondition:
21532169{
21542170 Expression result = null;
@@ -2349,6 +2365,20 @@ ExpressionList SimpleExpressionList() #ExpressionList:
23492365 }
23502366}
23512367
2368+ ExpressionList ConditionExpressionList() #ExpressionList:
2369+ {
2370+ ExpressionList retval = new ExpressionList();
2371+ List<Expression> expressions = new ArrayList<Expression>();
2372+ Expression expr = null;
2373+ }
2374+ {
2375+ expr=Condition() { expressions.add(expr); } ("," expr=Condition() { expressions.add(expr); })*
2376+ {
2377+ retval.setExpressions(expressions);
2378+ return retval;
2379+ }
2380+ }
2381+
23522382// trim( [leading|trailing|both] expr from expr)
23532383// The [leading|trailing|both] token has already been consumed
23542384NamedExpressionList NamedExpressionList1():
@@ -2678,7 +2708,7 @@ Expression PrimaryExpression() #PrimaryExpression:
26782708
26792709 | LOOKAHEAD(2) retval = IntervalExpression()
26802710
2681- | retval=Column()
2711+ | retval=Column()
26822712
26832713 | LOOKAHEAD("(" SimpleExpression() ")") "(" retval=SimpleExpression() ")" {retval = new Parenthesis(retval); }
26842714
@@ -3071,15 +3101,17 @@ Function Function() #Function:
30713101 funcName=RelObjectNameExt()
30723102
30733103 [ "." tmp=RelObjectNameExt() { funcName+= "." + tmp; } ["." tmp=RelObjectNameExt() { funcName+= "." + tmp; }]]
3074- "(" [ [<K_DISTINCT> { retval.setDistinct(true); } | <K_ALL> { retval.setAllColumns(true); }]
3104+ "(" [ [ LOOKAHEAD(2)( <K_DISTINCT> { retval.setDistinct(true); } | <K_ALL> { retval.setAllColumns(true); }) ]
30753105 ( LOOKAHEAD(4)
3106+ "*" { retval.setAllColumns(true); }
3107+ |
30763108 namedExpressionList=NamedExpressionList1()
30773109 |
30783110 LOOKAHEAD(NamedExpressionListExprFirst()) namedExpressionList = NamedExpressionListExprFirst()
3079- |
3080- LOOKAHEAD(3) expressionList=SimpleExpressionList()
30813111 |
3082- "*" { retval.setAllColumns(true); }
3112+ LOOKAHEAD(SimpleExpressionList()) expressionList=SimpleExpressionList()
3113+ //|
3114+ //LOOKAHEAD(ConditionExpressionList()) expressionList=ConditionExpressionList()
30833115 |
30843116 expr = SubSelect() { expr.setUseBrackets(false); expressionList = new ExpressionList(expr); }
30853117 )]
0 commit comments