Package: byacc Version: 20100216-1 Severity: normal Tags: patch The following patch fixes compatibility problems with bison's pure-parser option. Judging by the upstream author's freshmeat page [1], I believe the pure-parser option was meant specifically for bison support, thus why I left this bug at severity normal.
1. http://freshmeat.net/projects/byacc/ -- System Information: Debian Release: squeeze/sid APT prefers unstable APT policy: (500, 'unstable'), (1, 'experimental') Architecture: amd64 (x86_64) Kernel: Linux 2.6.32-5-amd64 (SMP w/8 CPU cores) Locale: LANG=en_US.UTF-8, LC_CTYPE=en_US.UTF-8 (charmap=UTF-8) Shell: /bin/sh linked to /bin/dash Versions of packages byacc depends on: ii libc6 2.11.1-2 Embedded GNU C Library: Shared lib byacc recommends no packages. byacc suggests no packages. -- no debconf information
Patch for better support for bison compatibility for pure-parser option. --- byacc-20100216.orig/skeleton.c +++ byacc-20100216/skeleton.c @@ -55,10 +55,18 @@ const char *xdecls[] = "", "extern int YYPARSE_DECL();", "", - "/* compatibility with flex */", - "#ifdef YYLEX_PARAM", + "/* compatibility with bison pure-parser and flex reentrant options */", + "#if defined YYPURE && defined YYLEX_PARAM", + "#define YYLEX_DECL() yylex(YYSTYPE *yylval, void *YYLEX_PARAM)", + "#define YYLEX yylex(&yylval, YYLEX_PARAM)", + "/* compatibility with flex reentrant option */", + "#elif defined YYLEX_PARAM", "#define YYLEX_DECL() yylex(void *YYLEX_PARAM)", "#define YYLEX yylex(YYLEX_PARAM)", + "/* compatilibity with bison pure-parser option */", + "#elif defined YYPURE", + "#define YYLEX_DECL() yylex(YYSTYPE *yylval)", + "#define YYLEX yylex(&yylval)", "#else", "#define YYLEX_DECL() yylex(void)", "#define YYLEX yylex()", --- byacc-20100216.orig/output.c +++ byacc-20100216/output.c @@ -1223,6 +1223,7 @@ output(void) free_shifts(); free_reductions(); output_prefix(output_file); + output_pure_parser(); output_stored_text(); write_section(xdecls); output_defines(); @@ -1239,7 +1240,6 @@ output(void) write_section(tables); } write_section(hdr_defs); - output_pure_parser(); if (!pure_parser) { write_section(hdr_vars);