Req #70024 [Asn]: Add column information to AST
Edit report at https://bugs.php.net/bug.php?id=70024&edit=1
ID: 70024
Updated by: nikic@php.net
Reported by: krblock at computer dot org
Summary: Add column information to AST
Status: Assigned
Type: Feature/Change Request
Package: *Compile Issues
PHP Version: 7.0.0alpha2
Assigned To: nikic
Block user comment: N
Private report: N
New Comment:
Finally got around to implementing the bison location tracking in https://github.com/php/php-src/pull/3948.
This would allow us to implement this FR from a technical perspective. As before, I'm not sure
we actually want to do so though.
Previous Comments:
------------------------------------------------------------------------
[2015-07-18 13:09:33] nikic@php.net
I don't think there's much value in making this available only in debug builds. I mean,
both things are pretty independent, there's no reason why you'd want to run a static
analyzer using a slow debug build.
Having this in a separate on-demand structure sounds more useful, though not quite clear yet how it
would like look.
In any case the first step towards this would be to start using bison location tracking instead of
our current lineno tracking. Documentation for access in semantic actions is in http://www.gnu.org/software/bison/manual/html_node/Tracking-Locations.html#Tracking-Locations
and the reentrant yylex API is documented in http://www.gnu.org/software/bison/manual/html_node/Pure-Calling.html#Pure-Calling.
------------------------------------------------------------------------
[2015-07-10 00:37:37] rasmus@php.net
Performance-wise it doesn't make sense to add this to the regular build, but it might be
possible to add when PHP is compiled in debug mode. That means you would need a separate PHP build,
of course.
------------------------------------------------------------------------
[2015-07-09 13:18:35] krblock at computer dot org
Static Analysis is not run on every invocation of a compiler, so it is much more tolerant of
performance degradation. The column information could be stored in a data structure on the side that
could be generated on demand and could be correlated back to the AST. For example, when doing Java
Static Analysis, we run the compiler in debug mode to get debug symbol information.
To build tools like PHPDOC and PHPXREF, this information will probably be needed as well, and the
tools will also probably be tolerant of some performance degradation.
------------------------------------------------------------------------
[2015-07-09 09:42:25] nikic@php.net
Yeah, we currently only store the line number. Adding accurate position information would require an
additional 16 bytes per AST node. I'm not sure if this is worthwhile if we don't need this
info ourselves.
------------------------------------------------------------------------
[2015-07-09 07:41:22] kalle@php.net
I don't think we uses columns anywhere in the code to help identify errors, so we would have to
add it just for this feature, Nikita do you have any input on this? (Just unassign after if desired)
------------------------------------------------------------------------
The remainder of the comments for this report are too long. To view
the rest of the comments, please view the bug report online at
https://bugs.php.net/bug.php?id=70024
--
Edit this bug report at https://bugs.php.net/bug.php?id=70024&edit=1
Thread (7 messages)