Yup.
But we have to be very careful, as we can't add that everywhere, as the
grammar would become really ambiguous, as Jochen mentioned.

On Tue, Mar 15, 2016 at 7:20 PM, Marc Paquette <[email protected]> wrote:

>
>
> Le 15 mars 2016 à 12:51, Guillaume Laforge <[email protected]> a écrit :
>
> It was indeed limited to top-level statements initially, but there have
> been cases where we felt it could be opened up.
> Perhaps it's worth reopening the discussion.
> For example, inside statements like if, or things like asserts, perhaps we
> could allow it?
> Open for discussion on this.
>
>
> +1
>
> If I understand correctly, that would be nice for DSL, so instead of
> having
>
> boolean allAdults = every member of familyComposition is ADULT
> if (allAdults) { ... }
>
> we could have
>
> if (every member of familyComposition is ADULT) { ... }
>
> (with the proper dsl wired in of course).
>
>
> On Tue, Mar 15, 2016 at 5:45 PM, Дионисьев Павел <[email protected]>
> wrote:
>
>> Dear Jesper,
>>
>> As far as I remember, command expressions are allowed as statements only.
>> There will be lots of ambiguities otherwise.
>>
>> Also, there are known issues in grammar, listed in original repository
>> <https://github.com/xSeagullx/antlrv4_groovy_grammar/issues>. You might
>> want to have a look and incorporate them in your issue tracker.
>>
>> And thank you for working on this project!
>>
>> Pavel.
>> ​
>>
>> On 15 March 2016 at 17:22, Jesper Steen Møller <[email protected]>
>> wrote:
>>
>>> Hi List
>>>
>>> I’ve yet to fully understand the rules behind the parenthesis-less
>>> method invocation syntax. Basically, it seems that while parenthesis-less
>>> method invocation (“command style”) can sometimes be used as an expression,
>>> it’s not universally so.
>>>
>>> I’d like to understand whether this is a merely an oversight or due to
>>> the current state of affairs in the parser, or intentional.
>>>
>>> Consider:
>>> int a = b c
>>> This is legal and equivalent to
>>> int a = b(c)
>>> similarly:
>>> a = b c
>>> Works fine, too, letting “b c” be a valid expression.
>>> However, the following:
>>> if (b c) {
>>> // Stuff
>>> }
>>> Gives an error:
>>> expecting ‘)’, found ‘c’ at line: 1, column: 11
>>>
>>> So, is the “command” syntax a special pseudo-expression, and if so,
>>> where is it allowed? Only by itself (“statement”), and as the RHS og
>>> assignments and initializers?
>>>
>>> I’d like to know this as it could get real nasty, depending on the
>>> answer, since allowing it everywhere will introduce some ambiguities, which
>>> will require some tweaks to keep the “non-left-recursion refactored”
>>> grammar we have now.
>>>
>>> Also, great news:
>>> Daniel Sun has started contributing fixes, submitting PR’s against the
>>> fork at https://github.com/jespersm/groovy/tree/antlr4 - he’s quite
>>> productive, thanks!
>>>
>>> For coordination, I’ve started tracking some of the known “things to do”
>>> at https://github.com/jespersm/groovy/issues
>>>
>>> -Jesper
>>>
>>>
>>
>>
>> --
>> С уважением, Дионисьев П.А.
>>
>
>
>
> --
> Guillaume Laforge
> Apache Groovy committer & PMC Vice-President
> Product Ninja & Advocate at Restlet <http://restlet.com/>
>
> Blog: http://glaforge.appspot.com/
> Social: @glaforge <http://twitter.com/glaforge> / Google+
> <https://plus.google.com/u/0/114130972232398734985/posts>
>
>
>


-- 
Guillaume Laforge
Apache Groovy committer & PMC Vice-President
Product Ninja & Advocate at Restlet <http://restlet.com>

Blog: http://glaforge.appspot.com/
Social: @glaforge <http://twitter.com/glaforge> / Google+
<https://plus.google.com/u/0/114130972232398734985/posts>

Reply via email to