aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/libexpr/lexer.l1
-rw-r--r--src/libexpr/parser.y15
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 {