Re: Bison 3 support for PHP 5.5

From: Date: Fri, 23 May 2014 01:44:29 +0000
Subject: Re: Bison 3 support for PHP 5.5
References: 1 2  Groups: php.internals 
Request: Send a blank email to internals+get-74438@lists.php.net to get a copy of this message
Hi Rasmus, On May 22, 2014, at 20:28, Rasmus Lerdorf <rasmus@lerdorf.com> 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

Attachment: [application/pgp-signature] Message signed with OpenPGP using GPGMail signature.asc
« previous php.internals (#74438) next »