Removing functionality. Removed soundslike/distanceto/like operators
This commit is contained in:
parent
59a4427525
commit
4d43768889
|
|
@ -19,7 +19,6 @@ would have taken? At the moment ternary expressions are just considered NOT wri
|
||||||
|
|
||||||
Syntax
|
Syntax
|
||||||
|
|
||||||
- are distanceto or soundslike any use?
|
|
||||||
- should the 'is' operator change to 'instanceof' ?
|
- should the 'is' operator change to 'instanceof' ?
|
||||||
- in this expression we hit the problem of not being able to write chars, since '' always means string:
|
- in this expression we hit the problem of not being able to write chars, since '' always means string:
|
||||||
evaluate("new java.lang.String('hello').charAt(2).equals('l'.charAt(0))", true, Boolean.class);
|
evaluate("new java.lang.String('hello').charAt(2).equals('l'.charAt(0))", true, Boolean.class);
|
||||||
|
|
|
||||||
|
|
@ -1,108 +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.SpelException;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* The distanceto operator uses an implementation of the levenshtein distance measurement for determining the 'edit
|
|
||||||
* distance' between two strings (the two operands to distanceto). http://en.wikipedia.org/wiki/Levenshtein_distance
|
|
||||||
*
|
|
||||||
* @author Andy Clement
|
|
||||||
*/
|
|
||||||
public class OperatorDistanceTo extends Operator {
|
|
||||||
|
|
||||||
private final static boolean DEBUG = false;
|
|
||||||
|
|
||||||
public OperatorDistanceTo(Token payload) {
|
|
||||||
super(payload);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public String getOperatorName() {
|
|
||||||
return "distanceto";
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public Object getValue(ExpressionState state) throws EvaluationException {
|
|
||||||
try {
|
|
||||||
Object left = getLeftOperand().getValue(state);
|
|
||||||
Object right = getRightOperand().getValue(state);
|
|
||||||
return computeDistanceTo((String) left, (String) right);
|
|
||||||
} catch (SpelException ee) {
|
|
||||||
throw ee;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private int computeDistanceTo(String from, String to) {
|
|
||||||
if (from.equals(to))
|
|
||||||
return 0;
|
|
||||||
int[][] d = new int[from.length() + 1][to.length() + 1];
|
|
||||||
|
|
||||||
for (int i = 0; i <= from.length(); i++)
|
|
||||||
d[i][0] = i;
|
|
||||||
|
|
||||||
for (int j = 0; j <= to.length(); j++)
|
|
||||||
d[0][j] = j;
|
|
||||||
|
|
||||||
for (int i = 1; i <= from.length(); i++) {
|
|
||||||
for (int j = 1; j <= to.length(); j++) {
|
|
||||||
int cost;
|
|
||||||
if (from.charAt(i - 1) == to.charAt(j - 1))
|
|
||||||
cost = 0;
|
|
||||||
else
|
|
||||||
cost = 1;
|
|
||||||
d[i][j] = min(d[i - 1][j] + 1, d[i][j - 1] + 1, d[i - 1][j - 1] + cost);// del,ins,subst
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (DEBUG) {
|
|
||||||
// Display the table of values
|
|
||||||
System.out.print(" ");
|
|
||||||
for (int j = 0; j < from.length(); j++) {
|
|
||||||
System.out.print(from.charAt(j) + " ");
|
|
||||||
}
|
|
||||||
System.out.println();
|
|
||||||
for (int j = 0; j < to.length() + 1; j++) {
|
|
||||||
System.out.print((j > 0 ? to.charAt(j - 1) : " ") + " ");
|
|
||||||
for (int i = 0; i < from.length() + 1; i++) {
|
|
||||||
System.out.print(d[i][j]);
|
|
||||||
if (i == from.length() && j == to.length())
|
|
||||||
System.out.print("<");
|
|
||||||
else if (i == from.length() - 1 && j == to.length())
|
|
||||||
System.out.print(">");
|
|
||||||
else
|
|
||||||
System.out.print(" ");
|
|
||||||
}
|
|
||||||
System.out.println();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return d[from.length()][to.length()];
|
|
||||||
}
|
|
||||||
|
|
||||||
private int min(int i, int j, int k) {
|
|
||||||
int min = i;
|
|
||||||
if (j < min)
|
|
||||||
min = j;
|
|
||||||
if (k < min)
|
|
||||||
min = k;
|
|
||||||
return min;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
@ -1,73 +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 java.util.regex.Matcher;
|
|
||||||
import java.util.regex.Pattern;
|
|
||||||
import java.util.regex.PatternSyntaxException;
|
|
||||||
|
|
||||||
import org.antlr.runtime.Token;
|
|
||||||
import org.springframework.expression.EvaluationException;
|
|
||||||
import org.springframework.expression.spel.ExpressionState;
|
|
||||||
import org.springframework.expression.spel.SpelException;
|
|
||||||
import org.springframework.expression.spel.SpelMessages;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Implements the like operator. The like operator behaves the same as the SQL LIKE operator. The first operand is
|
|
||||||
* compared against the expression supplied as the second operand. This expression supports two wildcards: % meaning any
|
|
||||||
* string of any length, and _ meaning any single character.
|
|
||||||
*
|
|
||||||
* @author Andy Clement
|
|
||||||
*/
|
|
||||||
public class OperatorLike extends Operator {
|
|
||||||
|
|
||||||
public OperatorLike(Token payload) {
|
|
||||||
super(payload);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public String getOperatorName() {
|
|
||||||
return "like";
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public Boolean getValue(ExpressionState state) throws EvaluationException {
|
|
||||||
SpelNode leftOp = getLeftOperand();
|
|
||||||
SpelNode rightOp = getRightOperand();
|
|
||||||
Object left = leftOp.getValue(state, String.class);
|
|
||||||
Object right = getRightOperand().getValue(state);
|
|
||||||
try {
|
|
||||||
if (!(left instanceof String)) {
|
|
||||||
throw new SpelException(leftOp.getCharPositionInLine(),
|
|
||||||
SpelMessages.INVALID_FIRST_OPERAND_FOR_LIKE_OPERATOR, left);
|
|
||||||
}
|
|
||||||
if (!(right instanceof String)) {
|
|
||||||
throw new SpelException(rightOp.getCharPositionInLine(),
|
|
||||||
SpelMessages.INVALID_SECOND_OPERAND_FOR_LIKE_OPERATOR, right);
|
|
||||||
}
|
|
||||||
// Translate that pattern to a java regex
|
|
||||||
// not really the best option, what if the right operand already had regex related chars in it?
|
|
||||||
String likePattern = (String) right;
|
|
||||||
likePattern = likePattern.replace('_', '.');
|
|
||||||
likePattern = likePattern.replaceAll("%", ".*");
|
|
||||||
Pattern pattern = Pattern.compile(likePattern);
|
|
||||||
Matcher matcher = pattern.matcher((String) left);
|
|
||||||
return matcher.matches();
|
|
||||||
} catch (PatternSyntaxException pse) {
|
|
||||||
throw new SpelException(rightOp.getCharPositionInLine(), pse, SpelMessages.INVALID_PATTERN, right);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -1,113 +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.SpelException;
|
|
||||||
import org.springframework.expression.spel.SpelMessages;
|
|
||||||
|
|
||||||
public class OperatorSoundsLike extends Operator {
|
|
||||||
|
|
||||||
public OperatorSoundsLike(Token payload) {
|
|
||||||
super(payload);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public Object getValue(ExpressionState state) throws EvaluationException {
|
|
||||||
Object left = getLeftOperand().getValue(state);
|
|
||||||
Object right = getRightOperand().getValue(state);
|
|
||||||
if (!(left instanceof String)) {
|
|
||||||
throw new SpelException(getCharPositionInLine(), SpelMessages.SOUNDSLIKE_NEEDS_STRING_OPERAND, left
|
|
||||||
.getClass().getName());
|
|
||||||
}
|
|
||||||
if (!(right instanceof String)) {
|
|
||||||
throw new SpelException(getCharPositionInLine(), SpelMessages.SOUNDSLIKE_NEEDS_STRING_OPERAND, right
|
|
||||||
.getClass().getName());
|
|
||||||
}
|
|
||||||
String leftSoundex = computeSoundex((String) left);
|
|
||||||
String rightSoundex = computeSoundex((String) right);
|
|
||||||
return state.getTypeComparator().compare(leftSoundex, rightSoundex) == 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
// TODO if we keep soundslike, improve upon this basic implementation
|
|
||||||
private String computeSoundex(String input) {
|
|
||||||
if (input == null || input.length() == 0)
|
|
||||||
return "0000";
|
|
||||||
input = input.toUpperCase();
|
|
||||||
StringBuilder soundex = new StringBuilder();
|
|
||||||
soundex.append(input.charAt(0));
|
|
||||||
for (int i = 1; i < input.length(); i++) {
|
|
||||||
char ch = input.charAt(i);
|
|
||||||
if ("HW".indexOf(ch) != -1)
|
|
||||||
continue; // remove HWs now
|
|
||||||
if ("BFPV".indexOf(ch) != -1) {
|
|
||||||
soundex.append("1");
|
|
||||||
} else if ("CGJKQSXZ".indexOf(ch) != -1) {
|
|
||||||
soundex.append("2");
|
|
||||||
} else if ("DT".indexOf(ch) != -1) {
|
|
||||||
soundex.append("3");
|
|
||||||
} else if ("L".indexOf(ch) != -1) {
|
|
||||||
soundex.append("4");
|
|
||||||
} else if ("MN".indexOf(ch) != -1) {
|
|
||||||
soundex.append("5");
|
|
||||||
} else if ("R".indexOf(ch) != -1) {
|
|
||||||
soundex.append("6");
|
|
||||||
|
|
||||||
} else {
|
|
||||||
soundex.append(ch);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
StringBuilder shorterSoundex = new StringBuilder();
|
|
||||||
shorterSoundex.append(soundex.charAt(0));
|
|
||||||
for (int i = 1; i < soundex.length(); i++) {
|
|
||||||
if ((i + 1) < soundex.length() && soundex.charAt(i) == soundex.charAt(i + 1))
|
|
||||||
continue;
|
|
||||||
if ("AEIOUY".indexOf(soundex.charAt(i)) != -1)
|
|
||||||
continue;
|
|
||||||
shorterSoundex.append(soundex.charAt(i));
|
|
||||||
}
|
|
||||||
shorterSoundex.append("0000");
|
|
||||||
return shorterSoundex.substring(0, 4);
|
|
||||||
}
|
|
||||||
|
|
||||||
// wikipedia:
|
|
||||||
// The Soundex code for a name consists of a letter followed by three numbers: the letter is the first letter of the
|
|
||||||
// name, and the numbers encode the remaining consonants. Similar sounding consonants share the same number so, for
|
|
||||||
// example, the labial B, F, P and V are all encoded as 1. Vowels can affect the coding, but are never coded
|
|
||||||
// directly unless they appear at the start of the name.
|
|
||||||
// The exact algorithm is as follows:
|
|
||||||
// Retain the first letter of the string
|
|
||||||
// Remove all occurrences of the following letters, unless it is the first letter: a, e, h, i, o, u, w, y
|
|
||||||
// Assign numbers to the remaining letters (after the first) as follows:
|
|
||||||
// b, f, p, v = 1
|
|
||||||
// c, g, j, k, q, s, x, z = 2
|
|
||||||
// d, t = 3
|
|
||||||
// l = 4
|
|
||||||
// m, n = 5
|
|
||||||
// r = 6
|
|
||||||
// If two or more letters with the same number were adjacent in the original name (before step 1), or adjacent
|
|
||||||
// except for any intervening h and w (American census only), then omit all but the first.
|
|
||||||
// Return the first four characters, right-padding with zeroes if there are fewer than four.
|
|
||||||
// Using this algorithm, both "Robert" and "Rupert" return the same string "R163" while "Rubin" yields "R150".
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public String getOperatorName() {
|
|
||||||
return "soundslike";
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
@ -86,17 +86,10 @@ relationalExpression : sumExpression (relationalOperator^ sumExpression)?;
|
||||||
|
|
||||||
sumExpression
|
sumExpression
|
||||||
: productExpression ( (PLUS^ | MINUS^) productExpression)*;
|
: productExpression ( (PLUS^ | MINUS^) productExpression)*;
|
||||||
// : left=productExpression (PLUS right+=productExpression)+ -> ^(ADD $left $right)
|
|
||||||
// | left=productExpression (MINUS right+=productExpression)+ -> ^(SUBTRACT $left $right)
|
|
||||||
// | productExpression;
|
|
||||||
|
|
||||||
// TODO could really do with changing ast node types here
|
// TODO could really do with changing ast node types here
|
||||||
productExpression
|
productExpression
|
||||||
: powerExpr ((STAR^ | DIV^| MOD^) powerExpr)* ;
|
: powerExpr ((STAR^ | DIV^| MOD^) powerExpr)* ;
|
||||||
// : left=powerExpr (STAR right+=powerExpr) -> ^(MULTIPLY $left $right)
|
|
||||||
// | left=powerExpr (DIV right+=powerExpr) -> ^(DIVIDE $left $right)
|
|
||||||
// | left=powerExpr (MOD right+=powerExpr) -> ^(MODULUS $left $right)
|
|
||||||
// | powerExpr;
|
|
||||||
|
|
||||||
powerExpr : unaryExpression (POWER^ unaryExpression)? ;
|
powerExpr : unaryExpression (POWER^ unaryExpression)? ;
|
||||||
|
|
||||||
|
|
@ -126,7 +119,6 @@ startNode
|
||||||
| listInitializer
|
| listInitializer
|
||||||
| mapInitializer
|
| mapInitializer
|
||||||
| lambda
|
| lambda
|
||||||
// | attribute
|
|
||||||
;
|
;
|
||||||
|
|
||||||
node
|
node
|
||||||
|
|
@ -288,10 +280,7 @@ relationalOperator
|
||||||
| IN
|
| IN
|
||||||
| IS
|
| IS
|
||||||
| BETWEEN
|
| BETWEEN
|
||||||
| LIKE
|
|
||||||
| MATCHES
|
| MATCHES
|
||||||
| SOUNDSLIKE
|
|
||||||
| DISTANCETO
|
|
||||||
;
|
;
|
||||||
|
|
||||||
ASSIGN: '=';
|
ASSIGN: '=';
|
||||||
|
|
@ -301,14 +290,9 @@ LESS_THAN: '<';
|
||||||
LESS_THAN_OR_EQUAL: '<=';
|
LESS_THAN_OR_EQUAL: '<=';
|
||||||
GREATER_THAN: '>';
|
GREATER_THAN: '>';
|
||||||
GREATER_THAN_OR_EQUAL: '>=';
|
GREATER_THAN_OR_EQUAL: '>=';
|
||||||
SOUNDSLIKE
|
|
||||||
: 'soundslike';
|
|
||||||
DISTANCETO
|
|
||||||
: 'distanceto';
|
|
||||||
IN: 'in';
|
IN: 'in';
|
||||||
IS: 'is';
|
IS: 'is';
|
||||||
BETWEEN:'between';
|
BETWEEN:'between';
|
||||||
LIKE: 'like';
|
|
||||||
MATCHES:'matches';
|
MATCHES:'matches';
|
||||||
NULL_LITERAL: 'null';
|
NULL_LITERAL: 'null';
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,92 +1,89 @@
|
||||||
COMMA=51
|
|
||||||
GREATER_THAN_OR_EQUAL=79
|
GREATER_THAN_OR_EQUAL=79
|
||||||
EXPRESSIONLIST=4
|
|
||||||
GREATER_THAN=78
|
|
||||||
MINUS=41
|
|
||||||
NUMBER=29
|
|
||||||
ARGLIST=11
|
|
||||||
BANG=46
|
|
||||||
LESS_THAN=76
|
|
||||||
METHOD=26
|
|
||||||
FALSE=70
|
|
||||||
PROPERTY_OR_FIELD=9
|
|
||||||
INDEXER=10
|
|
||||||
CONSTRUCTOR_ARRAY=15
|
|
||||||
NULL_LITERAL=66
|
|
||||||
NAMED_ARGUMENT=16
|
|
||||||
PIPE=62
|
|
||||||
DOT=47
|
|
||||||
AND=39
|
|
||||||
EXPRESSION=6
|
|
||||||
LCURLY=63
|
|
||||||
DATE_LITERAL=13
|
|
||||||
REAL_TYPE_SUFFIX=92
|
|
||||||
QUALIFIED_IDENTIFIER=7
|
|
||||||
SELECT=57
|
|
||||||
STRING_LITERAL=64
|
|
||||||
SUBTRACT=28
|
|
||||||
RBRACKET=54
|
|
||||||
RPAREN=33
|
|
||||||
BETWEEN=82
|
|
||||||
SIGN=93
|
|
||||||
PLUS=40
|
|
||||||
INTEGER_LITERAL=5
|
|
||||||
AT=52
|
|
||||||
RANGE=19
|
|
||||||
SOUNDSLIKE=85
|
|
||||||
WS=89
|
|
||||||
DOLLAR=50
|
|
||||||
LESS_THAN_OR_EQUAL=77
|
|
||||||
HEXADECIMAL_INTEGER_LITERAL=67
|
|
||||||
LAMBDA=61
|
|
||||||
SEMI=31
|
|
||||||
EQUAL=74
|
|
||||||
DOT_ESCAPED=88
|
|
||||||
QMARK=36
|
|
||||||
COLON=37
|
|
||||||
PROJECT=55
|
|
||||||
DIV=43
|
|
||||||
REAL_LITERAL=68
|
|
||||||
ADD=27
|
|
||||||
TRUE=69
|
|
||||||
EXPONENT_PART=91
|
|
||||||
POUND=48
|
|
||||||
HOLDER=14
|
|
||||||
SELECT_FIRST=58
|
SELECT_FIRST=58
|
||||||
|
COMMA=51
|
||||||
|
HOLDER=14
|
||||||
|
GREATER_THAN=78
|
||||||
TYPE=60
|
TYPE=60
|
||||||
|
EXPRESSIONLIST=4
|
||||||
|
MINUS=41
|
||||||
MAP_ENTRY=25
|
MAP_ENTRY=25
|
||||||
SELECT_LAST=59
|
SELECT_LAST=59
|
||||||
|
NUMBER=29
|
||||||
|
LESS_THAN=76
|
||||||
|
BANG=46
|
||||||
|
ARGLIST=11
|
||||||
|
FALSE=70
|
||||||
|
METHOD=26
|
||||||
|
PROPERTY_OR_FIELD=9
|
||||||
LBRACKET=53
|
LBRACKET=53
|
||||||
MOD=44
|
MOD=44
|
||||||
|
INDEXER=10
|
||||||
|
CONSTRUCTOR_ARRAY=15
|
||||||
FUNCTIONREF=17
|
FUNCTIONREF=17
|
||||||
|
NULL_LITERAL=66
|
||||||
|
NAMED_ARGUMENT=16
|
||||||
OR=38
|
OR=38
|
||||||
|
PIPE=62
|
||||||
|
DOT=47
|
||||||
RCURLY=56
|
RCURLY=56
|
||||||
|
EXPRESSION=6
|
||||||
|
AND=39
|
||||||
|
LCURLY=63
|
||||||
|
DATE_LITERAL=13
|
||||||
|
REAL_TYPE_SUFFIX=89
|
||||||
|
STRING_LITERAL=64
|
||||||
|
SELECT=57
|
||||||
|
QUALIFIED_IDENTIFIER=7
|
||||||
|
RBRACKET=54
|
||||||
|
SUBTRACT=28
|
||||||
ASSIGN=34
|
ASSIGN=34
|
||||||
|
BETWEEN=82
|
||||||
|
RPAREN=33
|
||||||
|
SIGN=90
|
||||||
LPAREN=30
|
LPAREN=30
|
||||||
HEX_DIGIT=73
|
HEX_DIGIT=73
|
||||||
|
PLUS=40
|
||||||
LIST_INITIALIZER=21
|
LIST_INITIALIZER=21
|
||||||
APOS=87
|
APOS=84
|
||||||
|
INTEGER_LITERAL=5
|
||||||
|
AT=52
|
||||||
ID=49
|
ID=49
|
||||||
NOT_EQUAL=75
|
NOT_EQUAL=75
|
||||||
|
RANGE=19
|
||||||
POWER=45
|
POWER=45
|
||||||
TYPEREF=18
|
TYPEREF=18
|
||||||
DISTANCETO=86
|
|
||||||
DECIMAL_DIGIT=71
|
DECIMAL_DIGIT=71
|
||||||
|
WS=86
|
||||||
IS=81
|
IS=81
|
||||||
|
DOLLAR=50
|
||||||
|
LESS_THAN_OR_EQUAL=77
|
||||||
SEMIRPAREN=32
|
SEMIRPAREN=32
|
||||||
DQ_STRING_LITERAL=65
|
DQ_STRING_LITERAL=65
|
||||||
LIKE=83
|
HEXADECIMAL_INTEGER_LITERAL=67
|
||||||
MAP_INITIALIZER=22
|
MAP_INITIALIZER=22
|
||||||
|
LAMBDA=61
|
||||||
LOCALFUNC=24
|
LOCALFUNC=24
|
||||||
IN=80
|
IN=80
|
||||||
CONSTRUCTOR=12
|
CONSTRUCTOR=12
|
||||||
|
SEMI=31
|
||||||
INTEGER_TYPE_SUFFIX=72
|
INTEGER_TYPE_SUFFIX=72
|
||||||
MATCHES=84
|
EQUAL=74
|
||||||
UPTO=90
|
MATCHES=83
|
||||||
|
DOT_ESCAPED=85
|
||||||
|
UPTO=87
|
||||||
|
QMARK=36
|
||||||
REFERENCE=8
|
REFERENCE=8
|
||||||
|
PROJECT=55
|
||||||
DEFAULT=35
|
DEFAULT=35
|
||||||
|
COLON=37
|
||||||
|
DIV=43
|
||||||
LOCALVAR=23
|
LOCALVAR=23
|
||||||
STAR=42
|
STAR=42
|
||||||
|
REAL_LITERAL=68
|
||||||
VARIABLEREF=20
|
VARIABLEREF=20
|
||||||
'date'=95
|
EXPONENT_PART=88
|
||||||
'new'=94
|
TRUE=69
|
||||||
|
ADD=27
|
||||||
|
POUND=48
|
||||||
|
'date'=92
|
||||||
|
'new'=91
|
||||||
|
|
|
||||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
|
|
@ -5,8 +5,8 @@ options {
|
||||||
}
|
}
|
||||||
@header {package org.springframework.expression.spel.generated;}
|
@header {package org.springframework.expression.spel.generated;}
|
||||||
|
|
||||||
T94 : 'new' ;
|
T91 : 'new' ;
|
||||||
T95 : 'date' ;
|
T92 : 'date' ;
|
||||||
|
|
||||||
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 67
|
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 67
|
||||||
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
|
||||||
|
|
@ -18,120 +18,112 @@ INTEGER_LITERAL
|
||||||
// $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" 279
|
||||||
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" 297
|
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 294
|
||||||
ASSIGN: '=';
|
ASSIGN: '=';
|
||||||
// $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" 295
|
||||||
EQUAL: '==';
|
EQUAL: '==';
|
||||||
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 299
|
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 296
|
||||||
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" 300
|
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 297
|
||||||
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" 301
|
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 298
|
||||||
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" 302
|
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 299
|
||||||
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" 303
|
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 300
|
||||||
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" 304
|
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 301
|
||||||
SOUNDSLIKE
|
|
||||||
: 'soundslike';
|
|
||||||
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 306
|
|
||||||
DISTANCETO
|
|
||||||
: 'distanceto';
|
|
||||||
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 308
|
|
||||||
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" 309
|
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 302
|
||||||
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" 310
|
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 303
|
||||||
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" 311
|
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 304
|
||||||
LIKE: 'like';
|
|
||||||
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 312
|
|
||||||
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" 313
|
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 305
|
||||||
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" 315
|
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 307
|
||||||
SEMI: ';';
|
SEMI: ';';
|
||||||
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 316
|
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 308
|
||||||
DOT: '.';
|
DOT: '.';
|
||||||
// $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" 309
|
||||||
COMMA: ',';
|
COMMA: ',';
|
||||||
// $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" 310
|
||||||
LPAREN: '(';
|
LPAREN: '(';
|
||||||
// $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" 311
|
||||||
RPAREN: ')';
|
RPAREN: ')';
|
||||||
// $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" 312
|
||||||
LCURLY: '{';
|
LCURLY: '{';
|
||||||
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 321
|
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 313
|
||||||
RCURLY: '}';
|
RCURLY: '}';
|
||||||
// $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" 314
|
||||||
LBRACKET: '[';
|
LBRACKET: '[';
|
||||||
// $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" 315
|
||||||
RBRACKET: ']';
|
RBRACKET: ']';
|
||||||
// $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" 316
|
||||||
PIPE: '|';
|
PIPE: '|';
|
||||||
|
|
||||||
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 326
|
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 318
|
||||||
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" 327
|
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 319
|
||||||
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" 328
|
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 320
|
||||||
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" 329
|
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 321
|
||||||
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" 331
|
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 323
|
||||||
PLUS: '+';
|
PLUS: '+';
|
||||||
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 332
|
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 324
|
||||||
MINUS: '-';
|
MINUS: '-';
|
||||||
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 333
|
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 325
|
||||||
DIV: '/';
|
DIV: '/';
|
||||||
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 334
|
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 326
|
||||||
STAR: '*';
|
STAR: '*';
|
||||||
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 335
|
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 327
|
||||||
MOD: '%';
|
MOD: '%';
|
||||||
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 336
|
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 328
|
||||||
POWER: '^';
|
POWER: '^';
|
||||||
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 337
|
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 329
|
||||||
BANG: '!';
|
BANG: '!';
|
||||||
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 338
|
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 330
|
||||||
POUND: '#';
|
POUND: '#';
|
||||||
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 339
|
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 331
|
||||||
QMARK: '?';
|
QMARK: '?';
|
||||||
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 340
|
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 332
|
||||||
DEFAULT: '??';
|
DEFAULT: '??';
|
||||||
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 341
|
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 333
|
||||||
LAMBDA: '{|';
|
LAMBDA: '{|';
|
||||||
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 342
|
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 334
|
||||||
PROJECT: '!{';
|
PROJECT: '!{';
|
||||||
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 343
|
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 335
|
||||||
SELECT: '?{';
|
SELECT: '?{';
|
||||||
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 344
|
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 336
|
||||||
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" 345
|
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 337
|
||||||
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" 346
|
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 338
|
||||||
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" 348
|
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 340
|
||||||
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" 349
|
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 341
|
||||||
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" 350
|
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 342
|
||||||
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" 351
|
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 343
|
||||||
DOT_ESCAPED: '\\.';
|
DOT_ESCAPED: '\\.';
|
||||||
//DOUBLE_DOT: ':';
|
//DOUBLE_DOT: ':';
|
||||||
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 353
|
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 345
|
||||||
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" 354
|
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 346
|
||||||
DOLLAR: '$';
|
DOLLAR: '$';
|
||||||
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 355
|
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 347
|
||||||
AT: '@';
|
AT: '@';
|
||||||
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 356
|
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 348
|
||||||
UPTO: '..';
|
UPTO: '..';
|
||||||
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 357
|
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 349
|
||||||
COLON: ':';
|
COLON: ':';
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
@ -149,26 +141,26 @@ COLON: ':';
|
||||||
in= (DECIMAL_DIGIT)+ (REAL_TYPE_SUFFIX)
|
in= (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" 374
|
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 366
|
||||||
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" 380
|
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 372
|
||||||
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" 381
|
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 373
|
||||||
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" 382
|
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 374
|
||||||
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" 383
|
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 375
|
||||||
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" 385
|
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 377
|
||||||
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" 386
|
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 378
|
||||||
fragment SIGN : '+' | '-' ;
|
fragment SIGN : '+' | '-' ;
|
||||||
// TODO what is M or m?
|
// TODO what is M or m?
|
||||||
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 388
|
// $ANTLR src "/Users/aclement/el2/spring-framework/trunk/org.springframework.expression/src/main/java/org/springframework/expression/spel/generated/SpringExpressions.g" 380
|
||||||
fragment REAL_TYPE_SUFFIX : 'F' | 'f' | 'D' | 'd' | 'M' | 'm' ;
|
fragment REAL_TYPE_SUFFIX : 'F' | 'f' | 'D' | 'd' | 'M' | 'm' ;
|
||||||
|
|
|
||||||
|
|
@ -39,7 +39,6 @@ import org.springframework.expression.spel.ast.MethodReference;
|
||||||
import org.springframework.expression.spel.ast.NullLiteral;
|
import org.springframework.expression.spel.ast.NullLiteral;
|
||||||
import org.springframework.expression.spel.ast.OperatorAnd;
|
import org.springframework.expression.spel.ast.OperatorAnd;
|
||||||
import org.springframework.expression.spel.ast.OperatorBetween;
|
import org.springframework.expression.spel.ast.OperatorBetween;
|
||||||
import org.springframework.expression.spel.ast.OperatorDistanceTo;
|
|
||||||
import org.springframework.expression.spel.ast.OperatorDivide;
|
import org.springframework.expression.spel.ast.OperatorDivide;
|
||||||
import org.springframework.expression.spel.ast.OperatorEquality;
|
import org.springframework.expression.spel.ast.OperatorEquality;
|
||||||
import org.springframework.expression.spel.ast.OperatorGreaterThan;
|
import org.springframework.expression.spel.ast.OperatorGreaterThan;
|
||||||
|
|
@ -49,7 +48,6 @@ import org.springframework.expression.spel.ast.OperatorInequality;
|
||||||
import org.springframework.expression.spel.ast.OperatorIs;
|
import org.springframework.expression.spel.ast.OperatorIs;
|
||||||
import org.springframework.expression.spel.ast.OperatorLessThan;
|
import org.springframework.expression.spel.ast.OperatorLessThan;
|
||||||
import org.springframework.expression.spel.ast.OperatorLessThanOrEqual;
|
import org.springframework.expression.spel.ast.OperatorLessThanOrEqual;
|
||||||
import org.springframework.expression.spel.ast.OperatorLike;
|
|
||||||
import org.springframework.expression.spel.ast.OperatorMatches;
|
import org.springframework.expression.spel.ast.OperatorMatches;
|
||||||
import org.springframework.expression.spel.ast.OperatorMinus;
|
import org.springframework.expression.spel.ast.OperatorMinus;
|
||||||
import org.springframework.expression.spel.ast.OperatorModulus;
|
import org.springframework.expression.spel.ast.OperatorModulus;
|
||||||
|
|
@ -57,7 +55,6 @@ import org.springframework.expression.spel.ast.OperatorMultiply;
|
||||||
import org.springframework.expression.spel.ast.OperatorNot;
|
import org.springframework.expression.spel.ast.OperatorNot;
|
||||||
import org.springframework.expression.spel.ast.OperatorOr;
|
import org.springframework.expression.spel.ast.OperatorOr;
|
||||||
import org.springframework.expression.spel.ast.OperatorPlus;
|
import org.springframework.expression.spel.ast.OperatorPlus;
|
||||||
import org.springframework.expression.spel.ast.OperatorSoundsLike;
|
|
||||||
import org.springframework.expression.spel.ast.Placeholder;
|
import org.springframework.expression.spel.ast.Placeholder;
|
||||||
import org.springframework.expression.spel.ast.Projection;
|
import org.springframework.expression.spel.ast.Projection;
|
||||||
import org.springframework.expression.spel.ast.PropertyOrFieldReference;
|
import org.springframework.expression.spel.ast.PropertyOrFieldReference;
|
||||||
|
|
@ -110,10 +107,6 @@ public class SpelTreeAdaptor extends CommonTreeAdaptor {
|
||||||
return new OperatorLessThanOrEqual(payload);
|
return new OperatorLessThanOrEqual(payload);
|
||||||
case SpringExpressionsLexer.GREATER_THAN_OR_EQUAL:
|
case SpringExpressionsLexer.GREATER_THAN_OR_EQUAL:
|
||||||
return new OperatorGreaterThanOrEqual(payload);
|
return new OperatorGreaterThanOrEqual(payload);
|
||||||
case SpringExpressionsLexer.SOUNDSLIKE:
|
|
||||||
return new OperatorSoundsLike(payload);
|
|
||||||
case SpringExpressionsLexer.DISTANCETO:
|
|
||||||
return new OperatorDistanceTo(payload);
|
|
||||||
case SpringExpressionsLexer.PLUS:
|
case SpringExpressionsLexer.PLUS:
|
||||||
return new OperatorPlus(payload);
|
return new OperatorPlus(payload);
|
||||||
case SpringExpressionsLexer.MINUS:
|
case SpringExpressionsLexer.MINUS:
|
||||||
|
|
@ -187,8 +180,6 @@ public class SpelTreeAdaptor extends CommonTreeAdaptor {
|
||||||
|
|
||||||
case SpringExpressionsLexer.IN:
|
case SpringExpressionsLexer.IN:
|
||||||
return new OperatorIn(payload);
|
return new OperatorIn(payload);
|
||||||
case SpringExpressionsLexer.LIKE:
|
|
||||||
return new OperatorLike(payload);
|
|
||||||
case SpringExpressionsLexer.BETWEEN:
|
case SpringExpressionsLexer.BETWEEN:
|
||||||
return new OperatorBetween(payload);
|
return new OperatorBetween(payload);
|
||||||
case SpringExpressionsLexer.MATCHES:
|
case SpringExpressionsLexer.MATCHES:
|
||||||
|
|
|
||||||
|
|
@ -57,26 +57,6 @@ public class EvaluationTests extends ExpressionTestCase {
|
||||||
evaluate("name in {null, \"Anonymous\"}", "false", Boolean.class);
|
evaluate("name in {null, \"Anonymous\"}", "false", Boolean.class);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void testRelOperatorsLike01() {
|
|
||||||
evaluate("'Abc' like 'A%_'", "true", Boolean.class);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void testRelOperatorsLike02() {
|
|
||||||
evaluate("'Abc' like '..'", "false", Boolean.class);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void testRelOperatorsLike03() {
|
|
||||||
evaluateAndCheckError("null like '.'", SpelMessages.INVALID_FIRST_OPERAND_FOR_LIKE_OPERATOR);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void testRelOperatorsLike04() {
|
|
||||||
evaluateAndCheckError("'abc' like 2.0", SpelMessages.INVALID_SECOND_OPERAND_FOR_LIKE_OPERATOR);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void testRelOperatorsLike05() {
|
|
||||||
evaluate("27 like '__'", "true", Boolean.class); // conversion int>string
|
|
||||||
}
|
|
||||||
|
|
||||||
public void testRelOperatorsBetween01() {
|
public void testRelOperatorsBetween01() {
|
||||||
evaluate("1 between {1, 5}", "true", Boolean.class);
|
evaluate("1 between {1, 5}", "true", Boolean.class);
|
||||||
}
|
}
|
||||||
|
|
@ -137,7 +117,6 @@ public class EvaluationTests extends ExpressionTestCase {
|
||||||
evaluate("27 matches '^.*2.*$'", true, Boolean.class); // conversion int>string
|
evaluate("27 matches '^.*2.*$'", true, Boolean.class); // conversion int>string
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// mixing operators
|
// mixing operators
|
||||||
public void testMixingOperators01() {
|
public void testMixingOperators01() {
|
||||||
evaluate("true and 5>3", "true", Boolean.class);
|
evaluate("true and 5>3", "true", Boolean.class);
|
||||||
|
|
@ -484,43 +463,6 @@ public class EvaluationTests extends ExpressionTestCase {
|
||||||
evaluate("(#sqrt={|n| T(Math).sqrt($n)};#delegate={|f,n| $f($n)};#delegate(#sqrt,4))", "2.0", Double.class);
|
evaluate("(#sqrt={|n| T(Math).sqrt($n)};#delegate={|f,n| $f($n)};#delegate(#sqrt,4))", "2.0", Double.class);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Soundex
|
|
||||||
public void testSoundex01() {
|
|
||||||
evaluate("'Rob' soundslike 'Rod'", "false", Boolean.class);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void testSoundex02() {
|
|
||||||
evaluate("'Robert' soundslike 'Rupert'", "true", Boolean.class);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void testSoundex03() {
|
|
||||||
evaluate("'Andy' soundslike 'Christian'", "false", Boolean.class);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void testSoundex04() {
|
|
||||||
evaluate("@(fruits:).values().?{#this.colorName soundslike 'gren'}!=null", "true", Boolean.class);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void testSoundex05() {
|
|
||||||
evaluate("@(fruits:).values().?{colorName soundslike 'gren'}!=null", "true", Boolean.class);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void testSoundex06() {
|
|
||||||
evaluate("'Adrian' soundslike 'Adrain'", "true", Boolean.class);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Word distance
|
|
||||||
public void testDistanceTo01() {
|
|
||||||
evaluate("'Saturday' distanceto 'Sunday'", "3", Integer.class);
|
|
||||||
evaluate("'Saturday' distanceto 'Monday'", "5", Integer.class);
|
|
||||||
evaluate("'Saturday' distanceto 'Saturdaz'", "1", Integer.class);
|
|
||||||
evaluate("'Saturday' distanceto 'Saturdab'", "1", Integer.class);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void testDistanceTo02() {
|
|
||||||
evaluate("'Kitten' distanceto 'Sitting'", "3", Integer.class);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void testVariableReferences() {
|
public void testVariableReferences() {
|
||||||
evaluate("(#answer=42;#answer)", "42", Integer.class, true);
|
evaluate("(#answer=42;#answer)", "42", Integer.class, true);
|
||||||
evaluate("($answer=42;$answer)", "42", Integer.class, true);
|
evaluate("($answer=42;$answer)", "42", Integer.class, true);
|
||||||
|
|
|
||||||
|
|
@ -27,7 +27,7 @@ import org.springframework.expression.spel.standard.StandardEvaluationContext;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Common superclass for expression tests.
|
* Common superclass for expression tests.
|
||||||
*
|
*
|
||||||
* @author Andy Clement
|
* @author Andy Clement
|
||||||
*/
|
*/
|
||||||
public abstract class ExpressionTestCase extends TestCase {
|
public abstract class ExpressionTestCase extends TestCase {
|
||||||
|
|
@ -36,9 +36,9 @@ public abstract class ExpressionTestCase extends TestCase {
|
||||||
|
|
||||||
protected final static boolean SHOULD_BE_WRITABLE = true;
|
protected final static boolean SHOULD_BE_WRITABLE = true;
|
||||||
protected final static boolean SHOULD_NOT_BE_WRITABLE = false;
|
protected final static boolean SHOULD_NOT_BE_WRITABLE = false;
|
||||||
|
|
||||||
protected static SpelExpressionParser parser = new SpelExpressionParser();
|
protected final static SpelExpressionParser parser = new SpelExpressionParser();
|
||||||
protected static StandardEvaluationContext eContext = TestScenarioCreator.getTestEvaluationContext();
|
protected final static StandardEvaluationContext eContext = TestScenarioCreator.getTestEvaluationContext();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Evaluate an expression and check that the actual result matches the expectedValue and the class of the result
|
* Evaluate an expression and check that the actual result matches the expectedValue and the class of the result
|
||||||
|
|
@ -137,7 +137,7 @@ public abstract class ExpressionTestCase extends TestCase {
|
||||||
* Evaluate an expression and check that the actual result matches the expectedValue and the class of the result
|
* Evaluate an expression and check that the actual result matches the expectedValue and the class of the result
|
||||||
* matches the expectedClassOfResult. This method can also check if the expression is writable (for example, it is a
|
* matches the expectedClassOfResult. This method can also check if the expression is writable (for example, it is a
|
||||||
* variable or property reference).
|
* variable or property reference).
|
||||||
*
|
*
|
||||||
* @param expression The expression to evaluate
|
* @param expression The expression to evaluate
|
||||||
* @param expectedValue the expected result for evaluating the expression
|
* @param expectedValue the expected result for evaluating the expression
|
||||||
* @param expectedClassOfResult the expected class of the evaluation result
|
* @param expectedClassOfResult the expected class of the evaluation result
|
||||||
|
|
@ -335,7 +335,7 @@ public abstract class ExpressionTestCase extends TestCase {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Produce a nice string representation of the input object.
|
* Produce a nice string representation of the input object.
|
||||||
*
|
*
|
||||||
* @param value object to be formatted
|
* @param value object to be formatted
|
||||||
* @return a nice string
|
* @return a nice string
|
||||||
*/
|
*/
|
||||||
|
|
|
||||||
|
|
@ -22,7 +22,7 @@ import org.springframework.expression.ParseException;
|
||||||
/**
|
/**
|
||||||
* Parse some expressions and check we get the AST we expect. Rather than inspecting each node in the AST, we ask it to
|
* Parse some expressions and check we get the AST we expect. Rather than inspecting each node in the AST, we ask it to
|
||||||
* write itself to a string form and check that is as expected.
|
* write itself to a string form and check that is as expected.
|
||||||
*
|
*
|
||||||
* @author Andy Clement
|
* @author Andy Clement
|
||||||
*/
|
*/
|
||||||
public class ParsingTests extends TestCase {
|
public class ParsingTests extends TestCase {
|
||||||
|
|
@ -137,14 +137,6 @@ public class ParsingTests extends TestCase {
|
||||||
parseCheck("3 in {1,2,3,4,5}", "(3 in {1,2,3,4,5})");
|
parseCheck("3 in {1,2,3,4,5}", "(3 in {1,2,3,4,5})");
|
||||||
}
|
}
|
||||||
|
|
||||||
public void testRelOperatorsLike01() {
|
|
||||||
parseCheck("'Abc' like '[A-Z]b*'", "('Abc' like '[A-Z]b*')");
|
|
||||||
}
|
|
||||||
|
|
||||||
public void testRelOperatorsLike02() {
|
|
||||||
parseCheck("'Abc' like '?'", "('Abc' like '?')");
|
|
||||||
}
|
|
||||||
|
|
||||||
public void testRelOperatorsBetween01() {
|
public void testRelOperatorsBetween01() {
|
||||||
parseCheck("1 between {1, 5}", "(1 between {1,5})");
|
parseCheck("1 between {1, 5}", "(1 between {1,5})");
|
||||||
}
|
}
|
||||||
|
|
@ -418,7 +410,7 @@ public class ParsingTests extends TestCase {
|
||||||
/**
|
/**
|
||||||
* Parse the supplied expression and then create a string representation of the resultant AST, it should be the same
|
* Parse the supplied expression and then create a string representation of the resultant AST, it should be the same
|
||||||
* as the original expression.
|
* as the original expression.
|
||||||
*
|
*
|
||||||
* @param expression the expression to parse *and* the expected value of the string form of the resultant AST
|
* @param expression the expression to parse *and* the expected value of the string form of the resultant AST
|
||||||
*/
|
*/
|
||||||
public void parseCheck(String expression) {
|
public void parseCheck(String expression) {
|
||||||
|
|
@ -428,7 +420,7 @@ public class ParsingTests extends TestCase {
|
||||||
/**
|
/**
|
||||||
* Parse the supplied expression and then create a string representation of the resultant AST, it should be the
|
* Parse the supplied expression and then create a string representation of the resultant AST, it should be the
|
||||||
* expected value.
|
* expected value.
|
||||||
*
|
*
|
||||||
* @param expression the expression to parse
|
* @param expression the expression to parse
|
||||||
* @param expectedStringFormOfAST the expected string form of the AST
|
* @param expectedStringFormOfAST the expected string form of the AST
|
||||||
*/
|
*/
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue