[Mesa-dev] [PATCH 2/4] glsl: Switch from the deprecated YYLEX_PARAM to %lex-param.

Nikita Malyavin nikitamalyavin at gmail.com
Mon Jul 29 20:44:48 PDT 2013


Kenneth, maybe it's better to mark _mesa_glsl_lex as inline?


2013/7/30 Kenneth Graunke <kenneth at whitecape.org>

> YYLEX_PARAM is no longer supported as of Bison 3.0.  Instead, the Bison
> developers recommend using %lex-param.
>
> %lex-param takes a type and variable name, similar to %parse-param,
> so you can't pass an arbitrary expression like state->scanner.  But Flex
> insists on passing the actual scanner object, not an arbitrary object
> like state.
>
> To solve this, the parser defines a wrapper lex() function which accepts
> "state," and calls Flex's lex() function with state->scanner.
>
> Fixes the build with Bison 3.0.  Also works with Bison 2.7.1.
>
> Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=67354
> Signed-off-by: Kenneth Graunke <kenneth at whitecape.org>
> Cc: mesa-stable at lists.freedesktop.org
> Cc: Sandeep <sandy.8925 at gmail.com>
> Cc: Bruno Jacquet <maxijac at free.fr>
> Cc: Laurent Carlier <lordheavym at gmail.com>
> Cc: Nikita Malyavin <nikitamalyavin at gmail.com>
> ---
>  src/glsl/glsl_parser.yy | 8 +++-----
>  1 file changed, 3 insertions(+), 5 deletions(-)
>
> diff --git a/src/glsl/glsl_parser.yy b/src/glsl/glsl_parser.yy
> index 0b16d1d..fcc5620 100644
> --- a/src/glsl/glsl_parser.yy
> +++ b/src/glsl/glsl_parser.yy
> @@ -31,8 +31,6 @@
>  #include "glsl_types.h"
>  #include "main/context.h"
>
> -#define YYLEX_PARAM state->scanner
> -
>  #undef yyerror
>
>  static void yyerror(YYLTYPE *loc, _mesa_glsl_parse_state *st, const char
> *msg)
> @@ -41,9 +39,9 @@ static void yyerror(YYLTYPE *loc, _mesa_glsl_parse_state
> *st, const char *msg)
>  }
>
>  static int
> -_mesa_glsl_lex(YYSTYPE *val, YYLTYPE *loc, void *scanner)
> +_mesa_glsl_lex(YYSTYPE *val, YYLTYPE *loc, _mesa_glsl_parse_state *state)
>  {
> -   return _mesa_glsl_lexer_lex(val, loc, scanner);
> +   return _mesa_glsl_lexer_lex(val, loc, state->scanner);
>  }
>  %}
>
> @@ -61,7 +59,7 @@ _mesa_glsl_lex(YYSTYPE *val, YYLTYPE *loc, void *scanner)
>     @$.source = 0;
>  }
>
> -%lex-param   {void *scanner}
> +%lex-param   {struct _mesa_glsl_parse_state *state}
>  %parse-param {struct _mesa_glsl_parse_state *state}
>
>  %union {
> --
> 1.8.3.4
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.freedesktop.org/archives/mesa-dev/attachments/20130730/33933ac1/attachment.html>


More information about the mesa-dev mailing list