diff options
-rw-r--r-- | src/libexpr/lexer.l | 1 | ||||
-rw-r--r-- | src/libexpr/parser.y | 15 |
2 files changed, 14 insertions, 2 deletions
diff --git a/src/libexpr/lexer.l b/src/libexpr/lexer.l index 625e044b6..5db13a716 100644 --- a/src/libexpr/lexer.l +++ b/src/libexpr/lexer.l @@ -10,6 +10,7 @@ #include "aterm.hh" #include "nixexpr.hh" #include "nixexpr-ast.hh" +#define BISON_HEADER_HACK #include "parser-tab.hh" using namespace nix; diff --git a/src/libexpr/parser.y b/src/libexpr/parser.y index dd4d509a4..e4b220e04 100644 --- a/src/libexpr/parser.y +++ b/src/libexpr/parser.y @@ -2,12 +2,20 @@ %pure-parser %locations %error-verbose +%defines +%no-lines %parse-param { yyscan_t scanner } %parse-param { ParseData * data } %lex-param { yyscan_t scanner } %{ +/* Newer versions of Bison copy the declarations below to + parser-tab.hh, which sucks bigtime since lexer.l doesn't want that + stuff. So allow it to be excluded. */ +#ifndef BISON_HEADER_HACK +#define BISON_HEADER_HACK + #include <stdio.h> #include <stdlib.h> #include <string.h> @@ -75,7 +83,7 @@ static Pos makeCurPos(YYLTYPE * loc, ParseData * data) } -void yyerror(YYLTYPE * loc, yyscan_t scanner, ParseData * data, char * error) +void yyerror(YYLTYPE * loc, yyscan_t scanner, ParseData * data, const char * error) { data->error = (format("%1%, at `%2%':%3%:%4%") % error % data->path % loc->first_line % loc->first_column).str(); @@ -100,7 +108,10 @@ static void freeAndUnprotect(void * p) #define YYMALLOC mallocAndProtect #define YYFREE freeAndUnprotect - + +#endif + + %} %union { |