More identifiers in member access
diff --git a/src/main/java/org/apache/commons/jexl3/parser/Parser.jjt b/src/main/java/org/apache/commons/jexl3/parser/Parser.jjt
index 47a4210..65999d0 100644
--- a/src/main/java/org/apache/commons/jexl3/parser/Parser.jjt
+++ b/src/main/java/org/apache/commons/jexl3/parser/Parser.jjt
@@ -180,14 +180,14 @@
}
<*> TOKEN : { /* PRIMITIVE TYPES */
- < CHAR : "char" >
- | < BYTE : "byte" >
- | < SHORT : "short" >
- | < INT : "int" >
- | < LONG : "long" >
- | < FLOAT : "float" >
- | < DOUBLE : "double" >
- | < BOOLEAN : "boolean" >
+ < CHAR : "char" > { popDot(); }
+ | < BYTE : "byte" > { popDot(); }
+ | < SHORT : "short" > { popDot(); }
+ | < INT : "int" > { popDot(); }
+ | < LONG : "long" > { popDot(); }
+ | < FLOAT : "float" > { popDot(); }
+ | < DOUBLE : "double" > { popDot(); }
+ | < BOOLEAN : "boolean" > { popDot(); }
}
<*> TOKEN : { /* STREAMS */
@@ -212,7 +212,8 @@
| < EQ : "eq" > { popDot(); }
| < ne : "!=" | "\u2260" >
| < NE : "ne" > { popDot(); }
- | < req : "=~" | "in" | "\u2208" > // regexp equal
+ | < req : "=~" | "\u2208" > // regexp equal
+ | < IN : "in" > { popDot(); }
| < rne : "!~" | "!in" | "\u2209" > // regexp not equal
| < is : "===" > // identitical
| < ni : "!==" > // not identitical
@@ -228,7 +229,7 @@
| < LT : "lt" > { popDot(); }
| < le : "<=" | "\u2264" >
| < LE : "le" > { popDot(); }
- | < iof : "instanceof" > { pushQ(); }
+ | < iof : "instanceof" > { popDot(); pushQ(); }
| < niof : "!instanceof" > { pushQ(); }
}
@@ -835,7 +836,7 @@
|
(<ne> | <NE>) RelationalExpression() #NENode(2)
|
- <req> RelationalExpression() #ERNode(2) // equals regexp
+ (<req> | <IN>) RelationalExpression() #ERNode(2) // equals regexp
|
<rne> RelationalExpression() #NRNode(2) // not equals regexp
|
@@ -997,12 +998,12 @@
void StopCountSelection() #StopCountNode : {}
{
- <lt> Expression()
+ (<lt> | <LT>) Expression()
}
void StartCountSelection() #StartCountNode : {}
{
- <gt> Expression()
+ (<gt> | <GT>) Expression()
}
void ArrayProjection() #ProjectionNode : {}
@@ -1345,9 +1346,9 @@
{
<HCURLY>
(
- MapElement() ( <COMMA> MapElement() )*
- |
<COLON>
+ |
+ MapElement() ( <COMMA> MapElement() )*
) <RCURLY> { jjtThis.setImmutable(true); }
}
@@ -1517,7 +1518,8 @@
{
( t = <DOT_IDENTIFIER> | t=<IF> | t=<ELSE> | t=<FOR> | t=<WHILE> | t=<DO>
| t=<TRY> | t=<CATCH> | t=<THROW> | t=<ASSERT> | t=<SYNCHRONIZED> | t=<REMOVE> | t=<THIS>
- | t=<SWITCH> | t=<CASE> | t=<DCASE> | t=<FINAL>
+ | t=<CHAR> | t=<BOOLEAN> | t=<BYTE> | t=<SHORT> | t=<INT> | t=<LONG> | t=<FLOAT> | t=<DOUBLE>
+ | t=<SWITCH> | t=<CASE> | t=<DCASE> | t=<FINAL> | t=<IN> | t=<iof>
| t=<NEW>| t=<EMPTY> | t=<SIZE> | t=<TRUE> | t=<FALSE> | t=<NULL>
| t=<_OR> | t=<_AND>| t=<NOT> | t=<NE> | t=<EQ> | t=<GT> | t=<GE> | t=<LT> | t=<LE>
| t=<VAR> | t=<FUNCTION> ) { return t ;}