summaryrefslogtreecommitdiffstats
path: root/src/glsl/glsl_parser.yy
diff options
context:
space:
mode:
authorKenneth Graunke <[email protected]>2013-07-29 15:28:59 -0700
committerKenneth Graunke <[email protected]>2013-07-31 11:51:57 -0700
commitf043381334a0760ec118d07b6fb7785b5692572a (patch)
treeca64bb3d18887b583da0556900b1d6afeb13379d /src/glsl/glsl_parser.yy
parenteb7c8c7fb6e49a04f3fe84a6d438160dc4a14ac0 (diff)
glsl: 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]
Diffstat (limited to 'src/glsl/glsl_parser.yy')
-rw-r--r--src/glsl/glsl_parser.yy8
1 files changed, 3 insertions, 5 deletions
diff --git a/src/glsl/glsl_parser.yy b/src/glsl/glsl_parser.yy
index 0b16d1d4a59..fcc5620cd6d 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 {