<div dir="ltr">Kenneth, maybe it's better to mark _mesa_glsl_lex as inline?<br></div><div class="gmail_extra"><br><br><div class="gmail_quote">2013/7/30 Kenneth Graunke <span dir="ltr"><<a href="mailto:kenneth@whitecape.org" target="_blank">kenneth@whitecape.org</a>></span><br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">YYLEX_PARAM is no longer supported as of Bison 3.0.  Instead, the Bison<br>
developers recommend using %lex-param.<br>
<br>
%lex-param takes a type and variable name, similar to %parse-param,<br>
so you can't pass an arbitrary expression like state->scanner.  But Flex<br>
insists on passing the actual scanner object, not an arbitrary object<br>
like state.<br>
<br>
To solve this, the parser defines a wrapper lex() function which accepts<br>
"state," and calls Flex's lex() function with state->scanner.<br>
<br>
Fixes the build with Bison 3.0.  Also works with Bison 2.7.1.<br>
<br>
Bugzilla: <a href="https://bugs.freedesktop.org/show_bug.cgi?id=67354" target="_blank">https://bugs.freedesktop.org/show_bug.cgi?id=67354</a><br>
Signed-off-by: Kenneth Graunke <<a href="mailto:kenneth@whitecape.org">kenneth@whitecape.org</a>><br>
Cc: <a href="mailto:mesa-stable@lists.freedesktop.org">mesa-stable@lists.freedesktop.org</a><br>
Cc: Sandeep <<a href="mailto:sandy.8925@gmail.com">sandy.8925@gmail.com</a>><br>
Cc: Bruno Jacquet <<a href="mailto:maxijac@free.fr">maxijac@free.fr</a>><br>
Cc: Laurent Carlier <<a href="mailto:lordheavym@gmail.com">lordheavym@gmail.com</a>><br>
Cc: Nikita Malyavin <<a href="mailto:nikitamalyavin@gmail.com">nikitamalyavin@gmail.com</a>><br>
---<br>
 src/glsl/glsl_parser.yy | 8 +++-----<br>
 1 file changed, 3 insertions(+), 5 deletions(-)<br>
<br>
diff --git a/src/glsl/glsl_parser.yy b/src/glsl/glsl_parser.yy<br>
index 0b16d1d..fcc5620 100644<br>
--- a/src/glsl/glsl_parser.yy<br>
+++ b/src/glsl/glsl_parser.yy<br>
@@ -31,8 +31,6 @@<br>
 #include "glsl_types.h"<br>
 #include "main/context.h"<br>
<br>
-#define YYLEX_PARAM state->scanner<br>
-<br>
 #undef yyerror<br>
<br>
 static void yyerror(YYLTYPE *loc, _mesa_glsl_parse_state *st, const char *msg)<br>
@@ -41,9 +39,9 @@ static void yyerror(YYLTYPE *loc, _mesa_glsl_parse_state *st, const char *msg)<br>
 }<br>
<br>
 static int<br>
-_mesa_glsl_lex(YYSTYPE *val, YYLTYPE *loc, void *scanner)<br>
+_mesa_glsl_lex(YYSTYPE *val, YYLTYPE *loc, _mesa_glsl_parse_state *state)<br>
 {<br>
-   return _mesa_glsl_lexer_lex(val, loc, scanner);<br>
+   return _mesa_glsl_lexer_lex(val, loc, state->scanner);<br>
 }<br>
 %}<br>
<br>
@@ -61,7 +59,7 @@ _mesa_glsl_lex(YYSTYPE *val, YYLTYPE *loc, void *scanner)<br>
    @$.source = 0;<br>
 }<br>
<br>
-%lex-param   {void *scanner}<br>
+%lex-param   {struct _mesa_glsl_parse_state *state}<br>
 %parse-param {struct _mesa_glsl_parse_state *state}<br>
<br>
 %union {<br>
<span class="HOEnZb"><font color="#888888">--<br>
1.8.3.4<br>
<br>
</font></span></blockquote></div><br></div>