[Mesa-dev] [PATCH 1/4] glsl: Change the lexer's namespace.

Laurent Carlier lordheavym at gmail.com
Wed Jul 31 00:08:34 PDT 2013


Le lundi 29 juillet 2013 16:07:35 Kenneth Graunke a écrit :
> Bison 3.0 removes the YYLEX_PARAM macro.  In preparation for handling
> this using %lex-param, the parser needs a wrapper function for the
> actual Flex lex() function.
> 
> 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_lexer.ll        | 2 +-
>  src/glsl/glsl_parser.yy       | 6 ++++++
>  src/glsl/glsl_parser_extras.h | 4 ++--
>  3 files changed, 9 insertions(+), 3 deletions(-)
> 
> diff --git a/src/glsl/glsl_lexer.ll b/src/glsl/glsl_lexer.ll
> index 9375230..e24df80 100644
> --- a/src/glsl/glsl_lexer.ll
> +++ b/src/glsl/glsl_lexer.ll
> @@ -149,7 +149,7 @@ literal_integer(char *text, int len, struct
> _mesa_glsl_parse_state *state, %option bison-bridge bison-locations
> reentrant noyywrap
>  %option nounput noyy_top_state
>  %option never-interactive
> -%option prefix="_mesa_glsl_"
> +%option prefix="_mesa_glsl_lexer_"
>  %option extra-type="struct _mesa_glsl_parse_state *"
> 
>  %x PP PRAGMA
> diff --git a/src/glsl/glsl_parser.yy b/src/glsl/glsl_parser.yy
> index bf31236..0b16d1d 100644
> --- a/src/glsl/glsl_parser.yy
> +++ b/src/glsl/glsl_parser.yy
> @@ -39,6 +39,12 @@ static void yyerror(YYLTYPE *loc, _mesa_glsl_parse_state
> *st, const char *msg) {
>     _mesa_glsl_error(loc, st, "%s", msg);
>  }
> +
> +static int
> +_mesa_glsl_lex(YYSTYPE *val, YYLTYPE *loc, void *scanner)
> +{
> +   return _mesa_glsl_lexer_lex(val, loc, scanner);
> +}
>  %}
> 
>  %expect 0
> diff --git a/src/glsl/glsl_parser_extras.h b/src/glsl/glsl_parser_extras.h
> index 7f478df..1e386dd 100644
> --- a/src/glsl/glsl_parser_extras.h
> +++ b/src/glsl/glsl_parser_extras.h
> @@ -337,8 +337,8 @@ extern void _mesa_glsl_lexer_ctor(struct
> _mesa_glsl_parse_state *state, extern void _mesa_glsl_lexer_dtor(struct
> _mesa_glsl_parse_state *state);
> 
>  union YYSTYPE;
> -extern int _mesa_glsl_lex(union YYSTYPE *yylval, YYLTYPE *yylloc,
> -			  void *scanner);
> +extern int _mesa_glsl_lexer_lex(union YYSTYPE *yylval, YYLTYPE *yylloc,
> +                                void *scanner);
> 
>  extern int _mesa_glsl_parse(struct _mesa_glsl_parse_state *);

Got the following error with bison3:
make[4]: Leaving directory `/build/mesa-git/src/mesa/src/glsl'
make[3]: Leaving directory `/build/mesa-git/src/mesa/src/glsl'
make[2]: Leaving directory `/build/mesa-git/src/mesa/src/glsl'
Making all in mesa
make[2]: Entering directory `/build/mesa-git/src/mesa/src/mesa'
  GEN      main/get_hash.h
updating main/git_sha1.h
make  all-recursive
make[3]: Entering directory `/build/mesa-git/src/mesa/src/mesa'
Making all in program
make[4]: Entering directory `/build/mesa-git/src/mesa/src/mesa/program'
  GEN      program_parse.tab.c
  GEN      program_parse.tab.h
  GEN      lex.yy.c
make  all-am
make[5]: Entering directory `/build/mesa-git/src/mesa/src/mesa/program'
  CC       libdricore_program_la-arbprogparse.lo
  CC       libdricore_program_la-prog_hash_table.lo
  CXX      libdricore_program_la-ir_to_mesa.lo
  CC       libdricore_program_la-program.lo
  CC       libdricore_program_la-program_parse_extra.lo
  CC       libdricore_program_la-prog_cache.lo
  CC       libdricore_program_la-prog_execute.lo
  CC       libdricore_program_la-prog_instruction.lo
  CC       libdricore_program_la-prog_noise.lo
  CC       libdricore_program_la-prog_optimize.lo
  CC       libdricore_program_la-prog_opt_constant_fold.lo
  CC       libdricore_program_la-prog_parameter.lo
  CC       libdricore_program_la-prog_parameter_layout.lo
  CC       libdricore_program_la-prog_print.lo
  CC       libdricore_program_la-prog_statevars.lo
  CC       libdricore_program_la-programopt.lo
  CC       libdricore_program_la-register_allocate.lo
  CXX      libdricore_program_la-sampler.lo
  CXX      libdricore_program_la-string_to_uint_map.lo
  CC       libdricore_program_la-symbol_table.lo
  CC       libdricore_program_la-lex.yy.lo
  CC       libdricore_program_la-program_parse.tab.lo
  CC       arbprogparse.lo
  CC       prog_hash_table.lo
program_parse.tab.c: In function '_mesa_program_parse':
program_parse.tab.c:1958:3: error: implicit declaration of function 'YYID' [-
Werror=implicit-function-declaration]
   YYLLOC_DEFAULT (yyloc, (yylsp - yylen), yylen);
   ^
cc1: some warnings being treated as errors
make[5]: *** [libdricore_program_la-program_parse.tab.lo] Error 1
make[5]: *** Waiting for unfinished jobs....
make[5]: Leaving directory `/build/mesa-git/src/mesa/src/mesa/program'
make[4]: *** [all] Error 2
make[4]: Leaving directory `/build/mesa-git/src/mesa/src/mesa/program'
make[3]: *** [all-recursive] Error 1
make[3]: Leaving directory `/build/mesa-git/src/mesa/src/mesa'
make[2]: *** [all] Error 2
make[2]: Leaving directory `/build/mesa-git/src/mesa/src/mesa'
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory `/build/mesa-git/src/mesa/src'
make: *** [all-recursive] Error 1

-- 
Laurent Carlier
ArchLinux Developer
http://www.archlinux.org
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 490 bytes
Desc: This is a digitally signed message part.
URL: <http://lists.freedesktop.org/archives/mesa-dev/attachments/20130731/f316714d/attachment.pgp>


More information about the mesa-dev mailing list