bean references removed, no more @(context:beanname)

This commit is contained in:
Andy Clement 2008-09-16 17:13:31 +00:00
parent 95892dc993
commit 39c966f419
9 changed files with 1616 additions and 1914 deletions

View File

@ -1,88 +0,0 @@
/*
* Copyright 2004-2008 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.springframework.expression.spel.ast;
import org.antlr.runtime.Token;
import org.springframework.expression.EvaluationException;
import org.springframework.expression.spel.ExpressionState;
import org.springframework.expression.spel.generated.SpringExpressionsLexer;
/**
* Represent a object reference of the form '@(<contextName>:<objectName>)'
*
*/
public class Reference extends SpelNode {
private boolean contextAndObjectDetermined = false;
private SpelNode contextNode = null;
private SpelNode objectNode = null;
public Reference(Token payload) {
super(payload);
}
@Override
public Object getValue(ExpressionState state) throws EvaluationException {
ensureContextAndNameDetermined();
Object contextName = (contextNode == null ? null : contextNode.getValue(state));
Object objectName = (objectNode == null ? null : objectNode.getValue(state));
Object referencedValue = state.lookupReference(contextName, objectName);
return referencedValue;
}
/**
* Work out which represents the context and which the object. This would be trivial except for parser recovery
* situations where the expression was incomplete. We need to do our best here to recover so that we can offer
* suitable code completion suggestions.
*/
private void ensureContextAndNameDetermined() {
if (contextAndObjectDetermined)
return;
contextAndObjectDetermined = true;
int colon = -1;
for (int i = 0; i < getChildCount(); i++) {
if (getChild(i).getToken().getType() == SpringExpressionsLexer.COLON) {
colon = i;
}
}
if (colon != -1) {
contextNode = getChild(colon - 1);
objectNode = getChild(colon + 1);
} else {
objectNode = getChild(0);
}
if (objectNode.getToken().getType() != SpringExpressionsLexer.QUALIFIED_IDENTIFIER) {
objectNode = null;
}
}
@Override
public String toStringAST() {
ensureContextAndNameDetermined();
StringBuilder sb = new StringBuilder();
sb.append("@(");
if (contextNode != null) {
sb.append(contextNode.toStringAST()).append(":");
}
sb.append(objectNode.toStringAST());
sb.append(")");
return sb.toString();
}
}

View File

@ -13,7 +13,6 @@ tokens {
INTEGER_LITERAL; INTEGER_LITERAL;
EXPRESSION; EXPRESSION;
QUALIFIED_IDENTIFIER; QUALIFIED_IDENTIFIER;
REFERENCE;
PROPERTY_OR_FIELD; PROPERTY_OR_FIELD;
INDEXER; INDEXER;
CONSTRUCTOR; CONSTRUCTOR;
@ -97,7 +96,6 @@ startNode
parenExpr parenExpr
| methodOrProperty | methodOrProperty
| functionOrVar | functionOrVar
| reference
| indexer | indexer
| literal | literal
| type | type
@ -152,17 +150,6 @@ methodArgs : LPAREN! (argument (COMMA! argument)* (COMMA!)?)? RPAREN!;
// access id as a child of the new node. // access id as a child of the new node.
property: id=ID -> ^(PROPERTY_OR_FIELD[$id]); property: id=ID -> ^(PROPERTY_OR_FIELD[$id]);
// start - in this block there are changes to help parser recovery and code completion
// fiddled with to support better code completion
// we preserve the colon and rparen to give positional info and the qualifiedId is optional to cope with
// code completing in @() (which is really an invalid expression)
reference
: AT pos=LPAREN (cn=contextName COLON)? (q=qualifiedId)? RPAREN
-> ^(REFERENCE[$pos] ($cn COLON)? $q? RPAREN);
// what I really want here is: was there a colon? position of the right paren
// end - in this block there are changes to help parser recovery and code completion
//indexer: LBRACKET r1=range (COMMA r2=range)* RBRACKET -> ^(INDEXER $r1 ($r2)*); //indexer: LBRACKET r1=range (COMMA r2=range)* RBRACKET -> ^(INDEXER $r1 ($r2)*);
indexer: LBRACKET r1=argument (COMMA r2=argument)* RBRACKET -> ^(INDEXER $r1 ($r2)*); indexer: LBRACKET r1=argument (COMMA r2=argument)* RBRACKET -> ^(INDEXER $r1 ($r2)*);

View File

@ -1,83 +1,82 @@
GREATER_THAN_OR_EQUAL=71 GREATER_THAN_OR_EQUAL=69
SELECT_FIRST=52 SELECT_FIRST=50
COMMA=45 COMMA=44
HOLDER=12 HOLDER=11
GREATER_THAN=70 GREATER_THAN=68
TYPE=54 TYPE=52
EXPRESSIONLIST=4 EXPRESSIONLIST=4
MINUS=36 MINUS=35
MAP_ENTRY=21 MAP_ENTRY=20
SELECT_LAST=53 SELECT_LAST=51
NUMBER=25 NUMBER=24
LESS_THAN=68 LESS_THAN=66
BANG=41 BANG=40
FALSE=62 FALSE=60
METHOD=22 METHOD=21
PROPERTY_OR_FIELD=9 PROPERTY_OR_FIELD=8
LBRACKET=47 LBRACKET=45
INDEXER=10 INDEXER=9
MOD=39 MOD=38
CONSTRUCTOR_ARRAY=13 CONSTRUCTOR_ARRAY=12
FUNCTIONREF=15 FUNCTIONREF=14
NULL_LITERAL=58 NULL_LITERAL=56
NAMED_ARGUMENT=14 NAMED_ARGUMENT=13
OR=33 OR=32
PIPE=77 PIPE=75
DOT=42 DOT=41
RCURLY=50 RCURLY=48
EXPRESSION=6 EXPRESSION=6
AND=34 AND=33
LCURLY=55 LCURLY=53
REAL_TYPE_SUFFIX=84 REAL_TYPE_SUFFIX=83
STRING_LITERAL=56 STRING_LITERAL=54
SELECT=51 SELECT=49
QUALIFIED_IDENTIFIER=7 QUALIFIED_IDENTIFIER=7
RBRACKET=48 RBRACKET=46
SUBTRACT=24 SUBTRACT=23
ASSIGN=27 ASSIGN=26
BETWEEN=74 BETWEEN=72
RPAREN=32 RPAREN=31
SIGN=85 SIGN=84
LPAREN=31 LPAREN=30
HEX_DIGIT=65 HEX_DIGIT=63
PLUS=35 PLUS=34
LIST_INITIALIZER=19 LIST_INITIALIZER=18
APOS=78 APOS=76
INTEGER_LITERAL=5 INTEGER_LITERAL=5
AT=46 AT=80
ID=44 ID=43
NOT_EQUAL=67 NOT_EQUAL=65
RANGE=17 RANGE=16
POWER=40 POWER=39
TYPEREF=16 TYPEREF=15
DECIMAL_DIGIT=63 DECIMAL_DIGIT=61
WS=80 WS=78
IS=73 IS=71
DOLLAR=81 DOLLAR=79
LESS_THAN_OR_EQUAL=69 LESS_THAN_OR_EQUAL=67
SEMIRPAREN=26 SEMIRPAREN=25
DQ_STRING_LITERAL=57 DQ_STRING_LITERAL=55
HEXADECIMAL_INTEGER_LITERAL=59 HEXADECIMAL_INTEGER_LITERAL=57
MAP_INITIALIZER=20 MAP_INITIALIZER=19
IN=72 IN=70
SEMI=76 SEMI=74
CONSTRUCTOR=11 CONSTRUCTOR=10
INTEGER_TYPE_SUFFIX=64 INTEGER_TYPE_SUFFIX=62
EQUAL=66 EQUAL=64
MATCHES=75 MATCHES=73
DOT_ESCAPED=79 DOT_ESCAPED=77
UPTO=82 UPTO=81
QMARK=29 QMARK=28
REFERENCE=8 PROJECT=47
PROJECT=49 DEFAULT=27
DEFAULT=28 COLON=29
COLON=30 DIV=37
DIV=38 STAR=36
STAR=37 REAL_LITERAL=58
REAL_LITERAL=60 VARIABLEREF=17
VARIABLEREF=18 EXPONENT_PART=82
EXPONENT_PART=83 TRUE=59
TRUE=61 ADD=22
ADD=23 POUND=42
POUND=43 'new'=85
'new'=86

View File

@ -5,143 +5,143 @@ options {
} }
@header {package org.springframework.expression.spel.generated;} @header {package org.springframework.expression.spel.generated;}
T86 : 'new' ; T85 : 'new' ;
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 59 // $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 58
SEMIRPAREN : ';)'; // recoveryrelated: allows us to cope with a rogue superfluous semicolon before the rparen in an expression list SEMIRPAREN : ';)'; // recoveryrelated: allows us to cope with a rogue superfluous semicolon before the rparen in an expression list
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 237 // $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 224
INTEGER_LITERAL INTEGER_LITERAL
: (DECIMAL_DIGIT)+ (INTEGER_TYPE_SUFFIX)?; : (DECIMAL_DIGIT)+ (INTEGER_TYPE_SUFFIX)?;
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 240 // $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 227
HEXADECIMAL_INTEGER_LITERAL : ('0x' | '0X') (HEX_DIGIT)+ (INTEGER_TYPE_SUFFIX)?; HEXADECIMAL_INTEGER_LITERAL : ('0x' | '0X') (HEX_DIGIT)+ (INTEGER_TYPE_SUFFIX)?;
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 255 // $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 242
ASSIGN: '='; ASSIGN: '=';
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 256 // $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 243
EQUAL: '=='; EQUAL: '==';
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 257 // $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 244
NOT_EQUAL: '!='; NOT_EQUAL: '!=';
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 258 // $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 245
LESS_THAN: '<'; LESS_THAN: '<';
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 259 // $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 246
LESS_THAN_OR_EQUAL: '<='; LESS_THAN_OR_EQUAL: '<=';
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 260 // $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 247
GREATER_THAN: '>'; GREATER_THAN: '>';
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 261 // $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 248
GREATER_THAN_OR_EQUAL: '>='; GREATER_THAN_OR_EQUAL: '>=';
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 262 // $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 249
IN: 'in'; IN: 'in';
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 263 // $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 250
IS: 'is'; IS: 'is';
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 264 // $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 251
BETWEEN:'between'; BETWEEN:'between';
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 265 // $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 252
MATCHES:'matches'; MATCHES:'matches';
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 266 // $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 253
NULL_LITERAL: 'null'; NULL_LITERAL: 'null';
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 268 // $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 255
SEMI: ';'; SEMI: ';';
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 269 // $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 256
DOT: '.'; DOT: '.';
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 270 // $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 257
COMMA: ','; COMMA: ',';
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 271 // $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 258
LPAREN: '('; LPAREN: '(';
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 272 // $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 259
RPAREN: ')'; RPAREN: ')';
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 273 // $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 260
LCURLY: '{'; LCURLY: '{';
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 274 // $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 261
RCURLY: '}'; RCURLY: '}';
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 275 // $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 262
LBRACKET: '['; LBRACKET: '[';
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 276 // $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 263
RBRACKET: ']'; RBRACKET: ']';
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 277 // $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 264
PIPE: '|'; PIPE: '|';
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 279 // $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 266
AND: 'and'; AND: 'and';
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 280 // $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 267
OR: 'or'; OR: 'or';
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 281 // $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 268
FALSE: 'false'; FALSE: 'false';
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 282 // $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 269
TRUE: 'true'; TRUE: 'true';
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 284 // $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 271
PLUS: '+'; PLUS: '+';
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 285 // $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 272
MINUS: '-'; MINUS: '-';
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 286 // $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 273
DIV: '/'; DIV: '/';
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 287 // $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 274
STAR: '*'; STAR: '*';
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 288 // $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 275
MOD: '%'; MOD: '%';
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 289 // $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 276
POWER: '^'; POWER: '^';
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 290 // $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 277
BANG: '!'; BANG: '!';
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 291 // $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 278
POUND: '#'; POUND: '#';
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 292 // $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 279
QMARK: '?'; QMARK: '?';
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 293 // $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 280
DEFAULT: '??'; DEFAULT: '??';
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 294 // $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 281
PROJECT: '!{'; PROJECT: '!{';
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 295 // $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 282
SELECT: '?{'; SELECT: '?{';
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 296 // $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 283
SELECT_FIRST: '^{'; SELECT_FIRST: '^{';
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 297 // $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 284
SELECT_LAST: '${'; SELECT_LAST: '${';
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 298 // $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 285
TYPE: 'T('; TYPE: 'T(';
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 300 // $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 287
STRING_LITERAL: '\''! (APOS|~'\'')* '\''!; STRING_LITERAL: '\''! (APOS|~'\'')* '\''!;
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 301 // $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 288
DQ_STRING_LITERAL: '"'! (~'"')* '"'!; DQ_STRING_LITERAL: '"'! (~'"')* '"'!;
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 302 // $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 289
ID: ('a'..'z'|'A'..'Z'|'_') ('a'..'z'|'A'..'Z'|'_'|'0'..'9'|DOT_ESCAPED)*; ID: ('a'..'z'|'A'..'Z'|'_') ('a'..'z'|'A'..'Z'|'_'|'0'..'9'|DOT_ESCAPED)*;
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 303 // $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 290
DOT_ESCAPED: '\\.'; DOT_ESCAPED: '\\.';
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 304 // $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 291
WS: ( ' ' | '\t' | '\n' |'\r')+ { $channel=HIDDEN; } ; WS: ( ' ' | '\t' | '\n' |'\r')+ { $channel=HIDDEN; } ;
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 305 // $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 292
DOLLAR: '$'; DOLLAR: '$';
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 306 // $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 293
AT: '@'; AT: '@';
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 307 // $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 294
UPTO: '..'; UPTO: '..';
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 308 // $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 295
COLON: ':'; COLON: ':';
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 311 // $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 298
REAL_LITERAL : REAL_LITERAL :
('.' (DECIMAL_DIGIT)+ (EXPONENT_PART)? (REAL_TYPE_SUFFIX)?) | ('.' (DECIMAL_DIGIT)+ (EXPONENT_PART)? (REAL_TYPE_SUFFIX)?) |
((DECIMAL_DIGIT)+ '.' (DECIMAL_DIGIT)+ (EXPONENT_PART)? (REAL_TYPE_SUFFIX)?) | ((DECIMAL_DIGIT)+ '.' (DECIMAL_DIGIT)+ (EXPONENT_PART)? (REAL_TYPE_SUFFIX)?) |
((DECIMAL_DIGIT)+ (EXPONENT_PART) (REAL_TYPE_SUFFIX)?) | ((DECIMAL_DIGIT)+ (EXPONENT_PART) (REAL_TYPE_SUFFIX)?) |
((DECIMAL_DIGIT)+ (REAL_TYPE_SUFFIX)); ((DECIMAL_DIGIT)+ (REAL_TYPE_SUFFIX));
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 317 // $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 304
fragment APOS : '\''! '\''; fragment APOS : '\''! '\'';
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 318 // $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 305
fragment DECIMAL_DIGIT : '0'..'9' ; fragment DECIMAL_DIGIT : '0'..'9' ;
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 319 // $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 306
fragment INTEGER_TYPE_SUFFIX : ( 'L' | 'l' ); fragment INTEGER_TYPE_SUFFIX : ( 'L' | 'l' );
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 320 // $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 307
fragment HEX_DIGIT : '0'|'1'|'2'|'3'|'4'|'5'|'6'|'7'|'8'|'9'|'A'|'B'|'C'|'D'|'E'|'F'|'a'|'b'|'c'|'d'|'e'|'f'; fragment HEX_DIGIT : '0'|'1'|'2'|'3'|'4'|'5'|'6'|'7'|'8'|'9'|'A'|'B'|'C'|'D'|'E'|'F'|'a'|'b'|'c'|'d'|'e'|'f';
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 322 // $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 309
fragment EXPONENT_PART : 'e' (SIGN)* (DECIMAL_DIGIT)+ | 'E' (SIGN)* (DECIMAL_DIGIT)+ ; fragment EXPONENT_PART : 'e' (SIGN)* (DECIMAL_DIGIT)+ | 'E' (SIGN)* (DECIMAL_DIGIT)+ ;
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 323 // $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 310
fragment SIGN : '+' | '-' ; fragment SIGN : '+' | '-' ;
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 324 // $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 311
fragment REAL_TYPE_SUFFIX : 'F' | 'f' | 'D' | 'd'; fragment REAL_TYPE_SUFFIX : 'F' | 'f' | 'D' | 'd';

View File

@ -55,7 +55,6 @@ import org.springframework.expression.spel.ast.Projection;
import org.springframework.expression.spel.ast.PropertyOrFieldReference; import org.springframework.expression.spel.ast.PropertyOrFieldReference;
import org.springframework.expression.spel.ast.QualifiedIdentifier; import org.springframework.expression.spel.ast.QualifiedIdentifier;
import org.springframework.expression.spel.ast.RealLiteral; import org.springframework.expression.spel.ast.RealLiteral;
import org.springframework.expression.spel.ast.Reference;
import org.springframework.expression.spel.ast.Selection; import org.springframework.expression.spel.ast.Selection;
import org.springframework.expression.spel.ast.StringLiteral; import org.springframework.expression.spel.ast.StringLiteral;
import org.springframework.expression.spel.ast.Ternary; import org.springframework.expression.spel.ast.Ternary;
@ -127,8 +126,6 @@ public class SpelTreeAdaptor extends CommonTreeAdaptor {
return new MethodReference(payload); return new MethodReference(payload);
case SpringExpressionsLexer.QUALIFIED_IDENTIFIER: case SpringExpressionsLexer.QUALIFIED_IDENTIFIER:
return new QualifiedIdentifier(payload); return new QualifiedIdentifier(payload);
case SpringExpressionsLexer.REFERENCE:
return new Reference(payload);
case SpringExpressionsLexer.TYPEREF: case SpringExpressionsLexer.TYPEREF:
return new TypeReference(payload); return new TypeReference(payload);

View File

@ -346,29 +346,29 @@ public class EvaluationTests extends ExpressionTestCase {
} }
// Bean references // Bean references
public void testReferences01() { // public void testReferences01() {
evaluate("@(apple).name", "Apple", String.class, true); // evaluate("@(apple).name", "Apple", String.class, true);
} // }
//
public void testReferences02() { // public void testReferences02() {
evaluate("@(fruits:banana).name", "Banana", String.class, true); // evaluate("@(fruits:banana).name", "Banana", String.class, true);
} // }
//
public void testReferences03() { // public void testReferences03() {
evaluate("@(a.b.c)", null, null); // evaluate("@(a.b.c)", null, null);
} // null - no context, a.b.c treated as name // } // null - no context, a.b.c treated as name
//
public void testReferences05() { // public void testReferences05() {
evaluate("@(a/b/c:orange).name", "Orange", String.class, true); // evaluate("@(a/b/c:orange).name", "Orange", String.class, true);
} // }
//
public void testReferences06() { // public void testReferences06() {
evaluate("@(apple).color.getRGB() == T(java.awt.Color).green.getRGB()", "true", Boolean.class); // evaluate("@(apple).color.getRGB() == T(java.awt.Color).green.getRGB()", "true", Boolean.class);
} // }
//
public void testReferences07() { // public void testReferences07() {
evaluate("@(apple).color.getRGB().equals(T(java.awt.Color).green.getRGB())", "true", Boolean.class); // evaluate("@(apple).color.getRGB().equals(T(java.awt.Color).green.getRGB())", "true", Boolean.class);
} // }
// value is not public, it is accessed through getRGB() // value is not public, it is accessed through getRGB()
// public void testStaticRef01() { // public void testStaticRef01() {

View File

@ -228,18 +228,18 @@ public class ParsingTests extends TestCase {
parseCheck("{'a','b','a','d','e'}.distinct()"); parseCheck("{'a','b','a','d','e'}.distinct()");
} }
// references // // references
public void testReferences01() { // public void testReferences01() {
parseCheck("@(foo)"); // parseCheck("@(foo)");
} // }
//
public void testReferences02() { // public void testReferences02() {
parseCheck("@(p:foo)"); // parseCheck("@(p:foo)");
} // }
//
public void testReferences04() { // public void testReferences04() {
parseCheck("@(a/b/c:foo)", "@(a.b.c:foo)"); // parseCheck("@(a/b/c:foo)", "@(a.b.c:foo)");
}// normalized to '.' for separator in QualifiedIdentifier // }// normalized to '.' for separator in QualifiedIdentifier
// properties // properties
public void testProperties01() { public void testProperties01() {