Re: Syntactical inconsistency with new group use syntax
| From: | Christoph Becker | Date: | Tue, 18 Aug 2015 22:18:40 +0000 |
| Subject: | Re: Syntactical inconsistency with new group use syntax | ||
| References: | 1 | Groups: | php.internals |
| Request: | Send a blank email to internals+get-87783@lists.php.net to get a copy of this message | ||
On 18.08.2015 at 22:47, Arne Blankerts wrote:
> while playing around with the new group use syntax, I stumbled upon an
> inconsistency of which I'm not sure whether or not it is expected.
> For the "classic" syntax, while technically pointless, a leading \ for
> the name is considered valid and works identical to a line without it:
>
> <?php
>
> namespace foo;
>
> use \some\bar;
> use some\baz;
>
>
> With the new group syntax, the version with a leading \ is considered
> invalid - a lint will PHP Parse error: syntax error, unexpected '{',
> expecting identifier (T_STRING):
>
> <?php
>
> namespace foo;
> use some\{ bar, baz };
> use \some\{ bar, baz };
>
>
>
>
> Is this a bug or feature?
It seems to me that is an oversight. The resolution would be rather
simple, cf.
<https://github.com/php/php-src/blob/php-7.0.0beta3/Zend/zend_language_parser.y#L366-L375>.
However, while looking at the grammar, I've noticed that the entities
inside the braces may start with a backslash, what I consider rather
strange (particularly as there has to be a backslash immediately before
the opening brace).
--
Christoph M. Becker