FAQ
Hi Rasmus,
On May 22, 2014, at 20:28, Rasmus Lerdorf wrote:
On 5/22/14, 6:01 PM, John Bafford wrote:
Hi,

I’ve submitted a PR (https://github.com/php/php-src/pull/683) to add support for Bison 3.0 to PHP 5.5.

I’ve run the tests on this patch, with no unexpected errors, with Bison 2.4 (minimum version for PHP 5.5 and 5.6), 2.7, and 3.0, with and without --enable-maintainer-zts against the current PHP-5.5 and (with minor changes) master branches.
Could you explain your changes a bit? You removed %pure-parser, for
example, and you shuffled globals around. This looks like more than just
adding support for Bison 3.

-Rasmus
I replaced %pure-parser (which was deprecated) with %pure_parser (its replacement). (Also, YYERROR_VERBOSE, which also was deprecated, with %error-verbose.)

Most of the changes in the PR revolve around this change in Zend/zend_language_parser.y:
-%code requires {
-#ifdef ZTS
-# define YYPARSE_PARAM tsrm_ls
-# define YYLEX_PARAM tsrm_ls
-#endif
-}
+%parse-param { void *tsrm_ls }
+%lex-param { void *tsrm_ls }

YYPARSE_PARAM and YYLEX_PARAM were deprecated, and then removed, and replaced with %parse-param and %lex-param. However, you cannot (or I did not see a way to) conditionally define parameters, as PHP was previously doing here.

So instead, I created the TSRMLS_DN and TSRMLS_CN macros which, in the ZTS case, work like TSRMLS_D/TSRMLS_C, but when ZTS is off, still resolve to a parameter (that must always be present), which is passed NULL.

-John

Search Discussions

Discussion Posts

Previous

Follow ups

Related Discussions

Discussion Navigation
viewthread | post
posts ‹ prev | 3 of 26 | next ›
Discussion Overview
groupphp-internals @
categoriesphp
postedMay 23, '14 at 1:02a
activeMay 29, '14 at 6:12p
posts26
users12
websitephp.net

People

Translate

site design / logo © 2022 Grokbase