From 7581cfdee4001cba719d4d72f8f17f1b4c04ed51 Mon Sep 17 00:00:00 2001 From: Eelco Dolstra Date: Mon, 2 Oct 2006 14:43:15 +0000 Subject: [PATCH] * Hack for Bison 2.3 compatability. --- src/libexpr/lexer.l | 1 + 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 625e044b68..5db13a7169 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 dd4d509a45..e4b220e04f 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 #include #include @@ -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 {