This is an automated email from the ASF dual-hosted git repository. henrib pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/commons-jexl.git
commit 263e221a7a71b1b14469d6778b681f5100fa4e81 Author: henrib <[email protected]> AuthorDate: Thu Jun 3 13:32:00 2021 +0200 JEXL-348: refined grammar using semantic infos and a syntactic kludge as fallback to allow user disambiguation of namespace usage, tests --- .../org/apache/commons/jexl3/parser/Parser.jjt | 24 ++++++---------------- 1 file changed, 6 insertions(+), 18 deletions(-) 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 8280a6d..73622ea 100644 --- a/src/main/java/org/apache/commons/jexl3/parser/Parser.jjt +++ b/src/main/java/org/apache/commons/jexl3/parser/Parser.jjt @@ -19,7 +19,7 @@ options { MULTI=true; - STATIC=false; + //STATIC=false; VISITOR=true; NODE_SCOPE_HOOK=true; NODE_CLASS="JexlNode"; @@ -507,11 +507,7 @@ void ConditionalExpression() #void : {} { ConditionalOrExpression() ( - <QMARK> (LOOKAHEAD(<IDENTIFIER> <COLON> , { !isDeclaredNamespace(getToken(1), getToken(2)) }) - Identifier(true) - | - Expression() - ) <COLON> Expression() #TernaryNode(3) + <QMARK> Expression() <COLON> Expression() #TernaryNode(3) | <ELVIS> Expression() #TernaryNode(2) | @@ -651,15 +647,7 @@ void NamespaceIdentifier() #NamespaceIdentifier : Token id; } { - ns=<IDENTIFIER> <COLON> id=<IDENTIFIER> { jjtThis.setNamespace(ns.image, id.image); } -} - -void StringIdentifier() #Identifier : -{ - Token t; -} -{ - t=<STRING_LITERAL> { jjtThis.setSymbol(Parser.buildString(t.image, true)); } + ns=<IDENTIFIER> <COLON> id=<IDENTIFIER> { jjtThis.setNamespace(ns.image, id.image); } } void Literal() #void : @@ -799,7 +787,7 @@ void Arguments() #Arguments : {} void FunctionCallLookahead() #void : {} { - LOOKAHEAD(2) <IDENTIFIER> <COLON> <IDENTIFIER> <LPAREN> + LOOKAHEAD(<IDENTIFIER> <COLON> <IDENTIFIER> <LPAREN>, { isDeclaredNamespace(getToken(1), getToken(2)) }) <IDENTIFIER> <COLON> <IDENTIFIER> <LPAREN> | LOOKAHEAD(2) <IDENTIFIER> <LPAREN> | @@ -808,9 +796,9 @@ void FunctionCallLookahead() #void : {} void FunctionCall() #void : {} { - LOOKAHEAD(2) NamespaceIdentifier() Arguments() #FunctionNode(2) + LOOKAHEAD(<IDENTIFIER> <COLON> <IDENTIFIER> <LPAREN>, { isDeclaredNamespace(getToken(1), getToken(2)) }) NamespaceIdentifier() Arguments() #FunctionNode(2) | - LOOKAHEAD(2) Identifier(true) Arguments() #FunctionNode(2) + LOOKAHEAD(<IDENTIFIER> <LPAREN>) Identifier(true) Arguments() #FunctionNode(2) } void Constructor() #ConstructorNode : {}
