Bug #61681 [Asn->Csd]: Malformed grammar
| From: | nikic@php.net | Date: | Mon, 09 Apr 2012 21:59:55 +0000 |
| Subject: | Bug #61681 [Asn->Csd]: Malformed grammar | ||
| References: | 1 | Groups: | php.bugs |
| Request: | Send a blank email to php-bugs+get-169369@lists.php.net to get a copy of this message | ||
Edit report at https://bugs.php.net/bug.php?id=61681&edit=1
ID: 61681
Updated by: nikic@php.net
Reported by: laruence@php.net
Summary: Malformed grammar
-Status: Assigned
+Status: Closed
Type: Bug
Package: *General Issues
PHP Version: 5.3.10
-Assigned To: dmitry
+Assigned To: nikic
Block user comment: N
Private report: N
New Comment:
This bug has been fixed in SVN.
Snapshots of the sources are packaged every three hours; this change
will be in the next snapshot. You can grab the snapshot at
http://snaps.php.net/.
For Windows:
http://windows.php.net/snapshots/
Thank you for the report, and for helping us make PHP better.
Previous Comments:
------------------------------------------------------------------------
[2012-04-09 17:21:56] colder@php.net
Automatic comment on behalf of nikic
Revision: http://git.php.net/?p=php-src.git;a=commit;h=b233de098daceb145b9a5009b8861ebb9df5c961
Log: Fix bug #61681: Malformed grammar
------------------------------------------------------------------------
[2012-04-09 15:58:25] colder@php.net
This is typically a limitation of our grammar.
We accept ${ string_varname }
and ${ expr }
due to the fact that ${asd} is not accessing the variable named after the
constant asd's value.
When the lexer looks at ${ function_call() } it finds ${ T_STRING_VARNAME() }
which will not parse. We might be able to fix it by looking ahead in the
<ST_LOOKING_FOR_VARNAME>{LABEL} { rule and detect cases where it should be a
T_STRING, i.e if the char after it is either } [ or {.
------------------------------------------------------------------------
[2012-04-09 15:34:25] laruence@php.net
Dmitry, do you think this is okey?
or should we document this behavior?
------------------------------------------------------------------------
[2012-04-09 15:33:02] laruence@php.net
Description:
------------
if use '@', you can call function in a string substitution context.
Test script:
---------------
<?php
$la = "ooxx";
$a = "${@substr('laruence', 0, 2)}";
echo $a;
Expected result:
----------------
PHP Error: syntax error
Actual result:
--------------
ooxx
------------------------------------------------------------------------
--
Edit this bug report at https://bugs.php.net/bug.php?id=61681&edit=1