Re: parsing break and continue statements
| From: | Kiyoto Tamura | Date: | Fri, 29 Jul 2011 02:24:59 +0000 |
| Subject: | Re: parsing break and continue statements | ||
| References: | 1 2 | Groups: | php.internals |
| Request: | Send a blank email to internals+get-54243@lists.php.net to get a copy of this message | ||
Hi Johannes,
Thanks for your reply :) What I meant was that why does the parser
still accept any expression after T_BREAK/CONTINUE and defer the error
check to zend_do_brk_cont? Isn't it clearer to only accept if the
expression following T_BREAK/CONTINUE is a positive integer (if there
is any expression at all)?
Kiyoto
2011/7/28 Johannes Schlüter <johannes@schlueters.de>:
> On Thu, 2011-07-28 at 16:10 -0700, Kiyoto Tamura wrote:
>> Hi,
>>
>> I am new to the PHP internals, and I was just looking through the code
>> related to parsing break/continue statements. It looks that as of PHP
>> 5.4, Zend/zend_language_parser.y accepts both "T_BREAK expr" and
>> "T_CONTINUE expr" and check to make sure "expr" is a positive integer
>> in the function zend_do_brk_cont. Doesn't it make more sense to
>> replace "T_BREAK expr" with "T_BREAK <positive integer>" (the
>> same
>> goes for the continue statement)?
>
> T_BREAK expr allows things like
>
> $foo = rand(...);
> break $foo;
>
> but we've dropped that for performance reasons in 5.4.
>
> johannes
>
>> Thanks in advance!
>>
>> kiyoto
>>
>
>
>