You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by he...@apache.org on 2009/08/30 13:09:20 UTC
svn commit: r809312 -
/commons/proper/jexl/branches/2.0/src/main/java/org/apache/commons/jexl/parser/Parser.jjt
Author: henrib
Date: Sun Aug 30 11:09:20 2009
New Revision: 809312
URL: http://svn.apache.org/viewvc?rev=809312&view=rev
Log:
No functional change, just a reordering to make grammar easier to follow and maintain.
Modified:
commons/proper/jexl/branches/2.0/src/main/java/org/apache/commons/jexl/parser/Parser.jjt
Modified: commons/proper/jexl/branches/2.0/src/main/java/org/apache/commons/jexl/parser/Parser.jjt
URL: http://svn.apache.org/viewvc/commons/proper/jexl/branches/2.0/src/main/java/org/apache/commons/jexl/parser/Parser.jjt?rev=809312&r1=809311&r2=809312&view=diff
==============================================================================
--- commons/proper/jexl/branches/2.0/src/main/java/org/apache/commons/jexl/parser/Parser.jjt (original)
+++ commons/proper/jexl/branches/2.0/src/main/java/org/apache/commons/jexl/parser/Parser.jjt Sun Aug 30 11:09:20 2009
@@ -30,7 +30,6 @@
STATIC=false;
VISITOR=true;
NODE_CLASS="JexlNode";
- NODE_USES_PARSER=true;
UNICODE_INPUT=true;
}
@@ -86,7 +85,7 @@
/***************************************
- * Program
+ * Statements
***************************************/
ASTJexlScript JexlScript() : {}
@@ -96,32 +95,52 @@
}
+void Statement() #void : {}
+{
+ ";"
+ | LOOKAHEAD(3) Block()
+ | IfStatement()
+ | ForeachStatement()
+ | WhileStatement()
+ | ExpressionStatement()
+}
+
void Block() #Block : {}
{
"{" ( Statement() )* "}"
}
-void EmptyFunction() : {}
+
+void ExpressionStatement() #void : {}
{
- "empty"
- ( Reference() | "(" Expression() ")" )
+ Expression() (LOOKAHEAD(2) ";")?
}
-void SizeFunction() : {}
+
+void IfStatement() : {}
{
- "size" "(" Expression() ")"
+ "if" "(" Expression() ")" Statement() ( LOOKAHEAD(1) "else" Statement() )?
}
-void Identifier() :
+
+void WhileStatement() : {}
{
- Token t;
+ "while" "(" Expression() ")" Statement()
}
+
+
+void ForeachStatement() : {}
{
- t=<IDENTIFIER>
- { jjtThis.image = t.image; }
+ "for" "(" Reference() ":" Expression() ")" Statement()
+|
+ "foreach" "(" Reference() "in" Expression() ")" Statement()
}
+/***************************************
+ * Expression syntax
+ ***************************************/
+
void Expression() #void : {}
{
LOOKAHEAD( Reference() "=" ) Assignment()
@@ -132,7 +151,7 @@
void Assignment() #Assignment(2) : {}
{
- Reference() "=" Expression()
+ Reference() "=" Expression()
}
/***************************************
@@ -246,8 +265,7 @@
"-" { jjtThis.image = "-"; }
}
-void MultiplicativeExpression() #void :
-{}
+void MultiplicativeExpression() #void : {}
{
UnaryExpression()
(
@@ -263,8 +281,7 @@
)?
}
-void UnaryExpression() #void :
-{}
+void UnaryExpression() #void : {}
{
"-" UnaryExpression() #UnaryMinusNode(1)
|
@@ -277,30 +294,20 @@
PrimaryExpression()
}
-void PrimaryExpression() #void : {}
-{
- Literal()
-|
- LOOKAHEAD(3) Reference()
-|
- LOOKAHEAD("(") "(" Expression() ")"
-|
- LOOKAHEAD("empty") EmptyFunction()
-|
- LOOKAHEAD("size") SizeFunction()
-|
- LOOKAHEAD("new" "(") Constructor()
-|
- LOOKAHEAD( "{" MapEntry() ) MapLiteral()
-|
- LOOKAHEAD( "[" Expression() ) ArrayLiteral()
-}
-
/***************************************
- * Literals
+ * Identifier & Literals
***************************************/
+void Identifier() :
+{
+ Token t;
+}
+{
+ t=<IDENTIFIER>
+ { jjtThis.image = t.image; }
+}
+
void Literal() #void :
{
Token t;
@@ -357,58 +364,42 @@
{ jjtThis.image = Parser.buildString(t.image, true); }
}
-/***************************************
- * Statements
- ***************************************/
-
-void Statement() #void : {}
+void ArrayLiteral() : {}
{
- ";"
- | LOOKAHEAD(3) Block()
- | IfStatement()
- | ForeachStatement()
- | WhileStatement()
- | ExpressionStatement()
+ "[" Expression() ( "," Expression() )* "]"
}
-
-void ExpressionStatement() #void : {}
+void MapLiteral() : {}
{
- Expression() (LOOKAHEAD(2) ";")?
+ "{" MapEntry() ( "," MapEntry() )* "}"
}
-
-void IfStatement() : {}
+void MapEntry() : {}
{
- "if" "(" Expression() ")" Statement() ( LOOKAHEAD(1) "else" Statement() )?
+ Expression() ":" Expression()
}
-void WhileStatement() : {}
-{
- "while" "(" Expression() ")" Statement()
-}
+/***************************************
+ * Functions & Methods
+ ***************************************/
-void ForeachStatement() : {}
+void EmptyFunction() : {}
{
- "for" "(" Reference() ":" Expression() ")" Statement()
+ LOOKAHEAD(3) "empty" "(" Expression() ")"
|
- "foreach" "(" Reference() "in" Expression() ")" Statement()
+ "empty" Reference()
}
-void ArrayLiteral() : {}
+void SizeFunction() : {}
{
- "[" Expression() ( "," Expression() )* "]"
+ "size" "(" Expression() ")"
}
-void MapLiteral() : {}
+void Function() #FunctionNode: {}
{
- "{" MapEntry() ( "," MapEntry() )* "}"
-}
-void MapEntry() : {}
-{
- Expression() ":" Expression()
+ Identifier() ":" Identifier() "("[ Expression() ( "," Expression() )* ] ")"
}
void Method() #MethodNode: {}
@@ -416,16 +407,6 @@
Identifier() "("[ Expression() ( "," Expression() )* ] ")"
}
-void Function() #FunctionNode: {}
-{
- Identifier() ":" Identifier() "("[ Expression() ( "," Expression() )* ] ")"
-}
-
-void ArrayAccess() : {}
-{
- Identifier() (LOOKAHEAD(2) "[" Expression() "]")+
-}
-
void AnyMethod() #void : {}
{
LOOKAHEAD("size") SizeMethod()
@@ -433,31 +414,44 @@
LOOKAHEAD(Identifier() "(") Method()
}
-void Constructor() # ConstructorNode() : {}
+void SizeMethod() : {}
{
- "new" "("[ Expression() ( "," Expression() )* ] ")"
+ "size" "(" ")"
}
-void SizeMethod() : {}
+void Constructor() # ConstructorNode() : {}
{
- "size" "(" ")"
+ "new" "("[ Expression() ( "," Expression() )* ] ")"
}
-void Reference() : {}
+
+/***************************************
+ * References
+ ***************************************/
+
+void PrimaryExpression() #void : {}
{
- ( LOOKAHEAD("new") Constructor()
+ Literal()
|
- LOOKAHEAD(Identifier() "[" ) ArrayAccess()
+ LOOKAHEAD(3) Reference()
|
- LOOKAHEAD(Identifier() ":" Identifier() "(") Function()
+ LOOKAHEAD("(") "(" Expression() ")"
|
- LOOKAHEAD(Identifier() "(") Method()
+ LOOKAHEAD("empty") EmptyFunction()
|
- Identifier()
+ LOOKAHEAD("size") SizeFunction()
|
- LOOKAHEAD("{") MapLiteral()
+ LOOKAHEAD("new" "(") Constructor()
|
- LOOKAHEAD("[") ArrayLiteral() ) DotReference()
+ LOOKAHEAD( "{" MapEntry() ) MapLiteral()
+|
+ LOOKAHEAD( "[" Expression() ) ArrayLiteral()
+}
+
+
+void ArrayAccess() : {}
+{
+ Identifier() (LOOKAHEAD(2) "[" Expression() "]")+
}
void DotReference() #void : {}
@@ -477,6 +471,22 @@
)*
}
+void Reference() : {}
+{
+ ( LOOKAHEAD("new") Constructor()
+|
+ LOOKAHEAD(Identifier() "[" ) ArrayAccess()
+|
+ LOOKAHEAD(Identifier() ":" Identifier() "(") Function()
+|
+ LOOKAHEAD(Identifier() "(") Method()
+|
+ Identifier()
+|
+ LOOKAHEAD("{") MapLiteral()
+|
+ LOOKAHEAD("[") ArrayLiteral() ) DotReference()
+}
/***************************************
* Identifier & String tokens