From fc5734fe23f35e5ce15f6b9c550115fb69113ea2 Mon Sep 17 00:00:00 2001
From: Akim Demaille <akim@epita.fr>
Date: Fri, 26 Jul 2002 06:25:35 +0000
Subject: [PATCH] * src/reader.h, src/reader.c (gram_error): ... can't get
 yycontrol without making too strong assumptions on the parser itself. *
 src/output.c (prepare_tokens): Use the real 0th value of token_translations
 instead of `0'. * src/parse-gram.y (yyerror): Don't rely on yycontrol being
 visible here. * data/yacc.c (yyreport_parse_error): Rename yylocation as
 yylloc for the time being: %locations ought to provide it to yyerror.

---
 ChangeLog        | 12 ++++++++++++
 data/yacc.c      |  4 ++--
 src/output.c     |  5 +++--
 src/parse-gram.c | 35 +++++++++++++++++++++++++++++------
 src/parse-gram.h | 29 ++---------------------------
 src/parse-gram.y |  9 ++++-----
 src/reader.h     |  3 +--
 7 files changed, 53 insertions(+), 44 deletions(-)

diff --git a/ChangeLog b/ChangeLog
index f581e540..da80bdc4 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,15 @@
+2002-07-26  Akim Demaille  <akim@epita.fr>
+
+	* src/reader.h, src/reader.c (gram_error): ... can't get
+	yycontrol without making too strong assumptions on the parser
+	itself.
+	* src/output.c (prepare_tokens): Use the real 0th value of
+	token_translations instead of `0'.
+	* src/parse-gram.y (yyerror): Don't rely on yycontrol being
+	visible here.
+	* data/yacc.c (yyreport_parse_error): Rename yylocation as yylloc
+	for the time being: %locations ought to provide it to yyerror.
+
 2002-07-25  Akim Demaille  <akim@epita.fr>
 
 	* src/output.c (prepare_tokens): Go up to ntokens, not ntokens + 1.
diff --git a/data/yacc.c b/data/yacc.c
index eed1a8a1..d2d06a10 100644
--- a/data/yacc.c
+++ b/data/yacc.c
@@ -650,7 +650,7 @@ b4_c_function([yyreport_parse_error],
 	      [[int],     [yystate]],
 	      [[int],     [yychar]],
 	      [[YYSTYPE], [yyvalue]]b4_location_if([,
-	      [[YYLTYPE], [yylocation]]]))
+	      [[YYLTYPE], [yylloc]]]))
 [{
 #if YYERROR_VERBOSE
   int yyn = yypact[yystate];
@@ -705,7 +705,7 @@ b4_c_function([yyreport_parse_error],
   (void) yystate;
   (void) yychar;
   (void) yyvalue;
-  ]b4_location_if([(void) yylocation;])[
+  ]b4_location_if([(void) yylloc;])[
 }]
 
 
diff --git a/src/output.c b/src/output.c
index 5b8ca108..c218af3e 100644
--- a/src/output.c
+++ b/src/output.c
@@ -305,8 +305,9 @@ static void
 prepare_tokens (void)
 {
   muscle_insert_symbol_number_table ("translate",
-				    token_translations,
-				    0, 1, max_user_token_number + 1);
+				     token_translations,
+				     token_translations[0],
+				     1, max_user_token_number + 1);
 
   {
     int i;
diff --git a/src/parse-gram.c b/src/parse-gram.c
index 45c72386..85c629fe 100644
--- a/src/parse-gram.c
+++ b/src/parse-gram.c
@@ -1,7 +1,7 @@
 /* A Bison parser, made from parse-gram.y, by GNU bison 1.49b.  */
 
 /* Skeleton parser for Yacc-like parsing with Bison,
-   Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002 Free Software Foundation, Inc.
+   Copyright 1984, 1989, 1990, 2000, 2001, 2002 Free Software Foundation, Inc.
 
    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
@@ -91,11 +91,11 @@ do {							\
    correctly typed access to it.  */
 #define yycontrol ((gram_control_t *) gram_control)
 
-/* Request detailed parse error messages, and pass them to
-   GRAM_ERROR. */
+/* Request detailed parse error messages, and pass them to GRAM_ERROR.
+   FIXME: depends on the undocumented availability of YYLLOC.t */
 #undef  yyerror
 #define yyerror(Msg) \
-        gram_error (yycontrol, &yylloc, Msg)
+        gram_error (&yylloc, Msg)
 
 #define YYPRINT(File, Type, Value) \
         yyprint (File, Type, &Value)
@@ -1846,9 +1846,32 @@ yyprint (FILE *file,
 }
 
 void
-gram_error (gram_control_t *control ATTRIBUTE_UNUSED,
-	    location_t *yylloc, const char *msg)
+gram_error (location_t *yylloc, const char *msg)
 {
   complain_at (*yylloc, "%s", msg);
 }
 
+/* A Bison parser, made from parse-gram.y, by GNU bison 1.49b.  */
+
+/* Skeleton parser for Yacc-like parsing with Bison,
+   Copyright 1984, 1989, 1990, 2000, 2001, 2002 Free Software Foundation, Inc.
+
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 2, or (at your option)
+   any later version.
+
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   You should have received a copy of the GNU General Public License
+   along with this program; if not, write to the Free Software
+   Foundation, Inc., 59 Temple Place - Suite 330,
+   Boston, MA 02111-1307, USA.  */
+
+/* As a special exception, when this file is copied by Bison into a
+   Bison output file, you may use that output file without restriction.
+   This special exception was added by the Free Software Foundation
+   in version 1.24 of Bison.  */
diff --git a/src/parse-gram.h b/src/parse-gram.h
index d8939d29..3968a395 100644
--- a/src/parse-gram.h
+++ b/src/parse-gram.h
@@ -1,28 +1,3 @@
-/* A Bison parser, made from parse-gram.y, by GNU bison 1.49b.  */
-
-/* Skeleton parser for Yacc-like parsing with Bison,
-   Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002 Free Software Foundation, Inc.
-
-   This program is free software; you can redistribute it and/or modify
-   it under the terms of the GNU General Public License as published by
-   the Free Software Foundation; either version 2, or (at your option)
-   any later version.
-
-   This program is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
-
-   You should have received a copy of the GNU General Public License
-   along with this program; if not, write to the Free Software
-   Foundation, Inc., 59 Temple Place - Suite 330,
-   Boston, MA 02111-1307, USA.  */
-
-/* As a special exception, when this file is copied by Bison into a
-   Bison output file, you may use that output file without restriction.
-   This special exception was added by the Free Software Foundation
-   in version 1.24 of Bison.  */
-
 #ifndef BISON_PARSE_GRAM_H
 # define BISON_PARSE_GRAM_H
 
@@ -136,8 +111,8 @@ typedef union {
   char *string;
   assoc_t assoc;
 } yystype;
-/* Line 1271 of /usr/local/share/bison/yacc.c.  */
-#line 141 "y.tab.h"
+/* Line 1270 of /usr/local/share/bison/yacc.c.  */
+#line 116 "y.tab.h"
 # define YYSTYPE yystype
 #endif
 
diff --git a/src/parse-gram.y b/src/parse-gram.y
index d777daec..ade81eac 100644
--- a/src/parse-gram.y
+++ b/src/parse-gram.y
@@ -64,11 +64,11 @@ do {							\
    correctly typed access to it.  */
 #define yycontrol ((gram_control_t *) gram_control)
 
-/* Request detailed parse error messages, and pass them to
-   GRAM_ERROR. */
+/* Request detailed parse error messages, and pass them to GRAM_ERROR.
+   FIXME: depends on the undocumented availability of YYLLOC.t */
 #undef  yyerror
 #define yyerror(Msg) \
-        gram_error (yycontrol, &yylloc, Msg)
+        gram_error (&yylloc, Msg)
 
 #define YYPRINT(File, Type, Value) \
         yyprint (File, Type, &Value)
@@ -459,8 +459,7 @@ yyprint (FILE *file,
 }
 
 void
-gram_error (gram_control_t *control ATTRIBUTE_UNUSED,
-	    location_t *yylloc, const char *msg)
+gram_error (location_t *yylloc, const char *msg)
 {
   complain_at (*yylloc, "%s", msg);
 }
diff --git a/src/reader.h b/src/reader.h
index 321740a0..8792372e 100644
--- a/src/reader.h
+++ b/src/reader.h
@@ -52,8 +52,7 @@ YY_DECL;
 
 /* From the parser.  */
 extern int gram_debug;
-void gram_error (gram_control_t *control,
-		 location_t *loc, const char *msg);
+void gram_error (location_t *loc, const char *msg);
 int gram_parse (void *control);
 
 /* The sort of braced code we are in.  */
-- 
2.47.2