|
|
@ -169,7 +169,7 @@ class InternalSpelExpressionParser extends TemplateAwareExpressionParser { |
|
|
|
//logicalOrExpression : logicalAndExpression (OR^ logicalAndExpression)*;
|
|
|
|
//logicalOrExpression : logicalAndExpression (OR^ logicalAndExpression)*;
|
|
|
|
private SpelNodeImpl eatLogicalOrExpression() { |
|
|
|
private SpelNodeImpl eatLogicalOrExpression() { |
|
|
|
SpelNodeImpl expr = eatLogicalAndExpression(); |
|
|
|
SpelNodeImpl expr = eatLogicalAndExpression(); |
|
|
|
while (peekIdentifierToken("or")) { |
|
|
|
while (peekIdentifierToken("or") || peekToken(TokenKind.SYMBOLIC_OR)) { |
|
|
|
Token t = nextToken(); //consume OR
|
|
|
|
Token t = nextToken(); //consume OR
|
|
|
|
SpelNodeImpl rhExpr = eatLogicalAndExpression(); |
|
|
|
SpelNodeImpl rhExpr = eatLogicalAndExpression(); |
|
|
|
checkRightOperand(t,rhExpr); |
|
|
|
checkRightOperand(t,rhExpr); |
|
|
@ -181,7 +181,7 @@ class InternalSpelExpressionParser extends TemplateAwareExpressionParser { |
|
|
|
// logicalAndExpression : relationalExpression (AND^ relationalExpression)*;
|
|
|
|
// logicalAndExpression : relationalExpression (AND^ relationalExpression)*;
|
|
|
|
private SpelNodeImpl eatLogicalAndExpression() { |
|
|
|
private SpelNodeImpl eatLogicalAndExpression() { |
|
|
|
SpelNodeImpl expr = eatRelationalExpression(); |
|
|
|
SpelNodeImpl expr = eatRelationalExpression(); |
|
|
|
while (peekIdentifierToken("and")) { |
|
|
|
while (peekIdentifierToken("and") || peekToken(TokenKind.SYMBOLIC_AND)) { |
|
|
|
Token t = nextToken();// consume 'AND'
|
|
|
|
Token t = nextToken();// consume 'AND'
|
|
|
|
SpelNodeImpl rhExpr = eatRelationalExpression(); |
|
|
|
SpelNodeImpl rhExpr = eatRelationalExpression(); |
|
|
|
checkRightOperand(t,rhExpr); |
|
|
|
checkRightOperand(t,rhExpr); |
|
|
@ -432,7 +432,6 @@ class InternalSpelExpressionParser extends TemplateAwareExpressionParser { |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//startNode
|
|
|
|
//startNode
|
|
|
|
// : parenExpr | literal
|
|
|
|
// : parenExpr | literal
|
|
|
|
// | type
|
|
|
|
// | type
|
|
|
@ -513,7 +512,7 @@ class InternalSpelExpressionParser extends TemplateAwareExpressionParser { |
|
|
|
private boolean maybeEatNullReference() { |
|
|
|
private boolean maybeEatNullReference() { |
|
|
|
if (peekToken(TokenKind.IDENTIFIER)) { |
|
|
|
if (peekToken(TokenKind.IDENTIFIER)) { |
|
|
|
Token nullToken = peekToken(); |
|
|
|
Token nullToken = peekToken(); |
|
|
|
if (!nullToken.stringValue().toLowerCase().equals("null")) { |
|
|
|
if (!nullToken.stringValue().equalsIgnoreCase("null")) { |
|
|
|
return false; |
|
|
|
return false; |
|
|
|
} |
|
|
|
} |
|
|
|
nextToken(); |
|
|
|
nextToken(); |
|
|
@ -805,7 +804,6 @@ class InternalSpelExpressionParser extends TemplateAwareExpressionParser { |
|
|
|
return t.kind==TokenKind.SELECT || t.kind==TokenKind.SELECT_FIRST || t.kind==TokenKind.SELECT_LAST; |
|
|
|
return t.kind==TokenKind.SELECT || t.kind==TokenKind.SELECT_FIRST || t.kind==TokenKind.SELECT_LAST; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
private boolean moreTokens() { |
|
|
|
private boolean moreTokens() { |
|
|
|
return tokenStreamPointer<tokenStream.size(); |
|
|
|
return tokenStreamPointer<tokenStream.size(); |
|
|
|
} |
|
|
|
} |
|
|
|