Module: Mesa
Branch: master
Commit: 6d2a9220b832d9a0c0cf35fcc5b9de1542af267d
URL:    
http://cgit.freedesktop.org/mesa/mesa/commit/?id=6d2a9220b832d9a0c0cf35fcc5b9de1542af267d

Author: Kenneth Graunke <[email protected]>
Date:   Mon Jul 29 16:03:46 2013 -0700

mesa/program: Switch from the deprecated YYLEX_PARAM to %lex-param.

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 <[email protected]>
Reviewed-by: Matt Turner <[email protected]>
Tested-by: Laurent Carlier <[email protected]>
Cc: "9.2" [email protected]

---

 src/mesa/program/program_parse.y |    9 ++++-----
 1 files changed, 4 insertions(+), 5 deletions(-)

diff --git a/src/mesa/program/program_parse.y b/src/mesa/program/program_parse.y
index 6415bef..3aceb21 100644
--- a/src/mesa/program/program_parse.y
+++ b/src/mesa/program/program_parse.y
@@ -113,15 +113,13 @@ static struct asm_instruction *asm_instruction_copy_ctor(
            + (Current).first_column;                                   \
       }                                                                        
\
    } while(YYID(0))
-
-#define YYLEX_PARAM state->scanner
 %}
 
 %pure-parser
 %locations
+%lex-param   { struct asm_parser_state *state }
 %parse-param { struct asm_parser_state *state }
 %error-verbose
-%lex-param { void *scanner }
 
 %union {
    struct asm_instruction *inst;
@@ -274,9 +272,10 @@ _mesa_program_lexer_lex(YYSTYPE *yylval_param, YYLTYPE 
*yylloc_param,
                         void *yyscanner);
 
 static int
-yylex(YYSTYPE *yylval_param, YYLTYPE *yylloc_param, void *yyscanner)
+yylex(YYSTYPE *yylval_param, YYLTYPE *yylloc_param,
+      struct asm_parser_state *state)
 {
-   return _mesa_program_lexer_lex(yylval_param, yylloc_param, yyscanner);
+   return _mesa_program_lexer_lex(yylval_param, yylloc_param, state->scanner);
 }
 %}
 

_______________________________________________
mesa-commit mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/mesa-commit

Reply via email to