commons-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Henri Biestro (Jira)" <j...@apache.org>
Subject [jira] [Commented] (JEXL-316) Operator ?? has very low priority
Date Wed, 02 Oct 2019 16:00:11 GMT

    [ https://issues.apache.org/jira/browse/JEXL-316?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16942930#comment-16942930
] 

Henri Biestro commented on JEXL-316:
------------------------------------

Discussed this with other parties (devs, consultants) that disliked the idea that '?:' and
'??' would lead to potentially very different usages and results. The current semantic of
'if-false' and 'if-null' and their difference is understood; the surprise that would come
from having so drastically different syntactic applicable rules a scripting language is not
liked. Not sure the change can survive the 'no surprise' rule.... 
Considering he (external) consensus is the syntactic rules for both, I only hop and hope you
can fuill 2  


> Operator ?? has very low priority
> ---------------------------------
>
>                 Key: JEXL-316
>                 URL: https://issues.apache.org/jira/browse/JEXL-316
>             Project: Commons JEXL
>          Issue Type: Bug
>    Affects Versions: 3.1
>            Reporter: Dmitri Blinov
>            Assignee: Henri Biestro
>            Priority: Major
>             Fix For: 3.2
>
>
> In current version of JEXL the script
> {code:java}
> 10??0 + 200 {code}
> evaluates to 10, which is counterintuitive. It requires to always use parantheses after
{{\\??}}. The operator {{??}} should have higer priority. It is the same problem as with current
version of freemarker, but they promise to fix it in the next major release.
> The suggestion is to set priority of operator {{??}} to be between {{UnaryExpression()}}
and {{ValueExpression()}}
> {code}
> void ConditionalExpression() #void : {}
> {
>   ConditionalOrExpression()
>   (
>     <QMARK> Expression() <COLON> Expression() #TernaryNode(3)
>   |
>     <ELVIS> Expression() #TernaryNode(2)
>   )?
> }
> ...
> void UnaryExpression() #void : {}
> {
>     <minus> UnaryExpression() #UnaryMinusNode(1)
>   |
>     <plus> UnaryExpression() #UnaryPlusNode(1)
>   |
>     <tilda> UnaryExpression() #BitwiseComplNode(1)
>   |
>     (<not>|<NOT>) UnaryExpression() #NotNode(1)
>   |
>     <EMPTY> UnaryExpression() #EmptyFunction(1)
>   |
>     <SIZE> UnaryExpression() #SizeFunction(1)
>   |
>     NullpExpression()
> }
> void NullpExpression() #void : {}
> {
>     ValueExpression()
>     (
>        <NULLP> ValueExpression() #NullpNode(2)
>     )*
> }
> {code}



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

Mime
View raw message