On 03/24/2013 10:35 AM, Felipe Pena wrote: > Hi, > > 2013/3/24 Rasmus Lerdorf <ras...@lerdorf.com>: >> On 03/22/2013 02:02 AM, Remi Collet wrote: >>> While build of 5.5 snapshot works perfectly, beta1 ZTS build is broken >>> >>> In file included from >>> /dev/shm/BUILD/php-5.5.0beta1/ext/tokenizer/tokenizer.c:33:0: >>> /dev/shm/BUILD/php-5.5.0beta1/build-ztscli/Zend/zend_language_parser.h:331:5: >>> error: conflicting types for 'zendparse' >>> In file included from >>> /dev/shm/BUILD/php-5.5.0beta1/Zend/zend_globals.h:28:0, >>> from /dev/shm/BUILD/php-5.5.0beta1/Zend/zend_compile.h:418, >>> from /dev/shm/BUILD/php-5.5.0beta1/Zend/zend_modules.h:26, >>> from /dev/shm/BUILD/php-5.5.0beta1/Zend/zend_API.h:26, >>> from /dev/shm/BUILD/php-5.5.0beta1/main/php.h:38, >>> from >>> /dev/shm/BUILD/php-5.5.0beta1/ext/tokenizer/tokenizer.c:25: >>> /dev/shm/BUILD/php-5.5.0beta1/Zend/zend_globals_macros.h:35:5: note: >>> previous declaration of 'zendparse' was here >>> >>> Comparing the 201303201430 snapshot (very closed to beta1) and beta1 archive >>> >>> 201303201430, in bison generated files: >>> /* A Bison parser, made by GNU Bison 2.4.1. */ >>> beta1: >>> /* A Bison parser, made by GNU Bison 2.6.1. */ >>> >>> So, it seems snapshot script don't use the same environment than the one >>> used to generate release. >>> >>> Any idea how to fix this ? >> >> I took a quick look at this. The Bison change causing this from their >> NEWS file is: >> >> *** Features deprecated since Bison 1.875 >> YYPARSE_PARAM and YYLEX_PARAM, deprecated in favor of >> %parse-param and %lex-param, will no longer be supported. >> >> I was hoping the fix would be as simple as doing: >> >> -#define YYPARSE_PARAM tsrm_ls >> -#define YYLEX_PARAM tsrm_ls >> +%parse-param { tsrm_ls } >> +%lex-param { tsrm_ls } >> >> but that doesn't quite do the trick. Need to read up more on how >> %parse-param and %lex-param work. If someone wants to do a little light >> reading and report back it would be appreciated. >> > > http://www.gnu.org/software/bison/manual/html_node/Parser-Function.html#Parser-Function > > This page explain how to use it.
Sure, I see how they work, but the problem is that they can't be inside the %{ ... %} code block there. They have to be outside and as such won't have access to the #ifdef ZTS. So I don't think we can conditionally create a reentrant parser like we did before without refactoring things a bit. -Rasmus -- PHP Internals - PHP Runtime Development Mailing List To unsubscribe, visit: http://www.php.net/unsub.php