]> git.saurik.com Git - bison.git/commitdiff
* src/complain.h, src/complain.c (warn, complain): Remove, unused.
authorAkim Demaille <akim@epita.fr>
Tue, 9 Jul 2002 15:54:39 +0000 (15:54 +0000)
committerAkim Demaille <akim@epita.fr>
Tue, 9 Jul 2002 15:54:39 +0000 (15:54 +0000)
* src/reader.c (lineno): Remove.
Adjust all dependencies.
(get_merge_function): Take a location and use complain_at.
* src/symtab.h, src/symtab.c (symbol_make_alias): Likewise.
* tests/regression.at (Invalid inputs, Mixing %token styles):
Adjust.

12 files changed:
ChangeLog
src/complain.c
src/complain.h
src/main.c
src/parse-gram.c
src/parse-gram.y
src/reader.c
src/scan-gram.c
src/scan-gram.l
src/symtab.c
src/symtab.h
tests/regression.at

index 73a66017b9a6c5f35a30bdfe35d6bfbf6c189d32..35f86d0c7c00659759e6d7a630be3c61cec22a31 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,13 @@
+2002-07-09  Akim Demaille  <akim@epita.fr>
+
+       * src/complain.h, src/complain.c (warn, complain): Remove, unused.
+       * src/reader.c (lineno): Remove.
+       Adjust all dependencies.
+       (get_merge_function): Take a location and use complain_at.
+       * src/symtab.h, src/symtab.c (symbol_make_alias): Likewise.
+       * tests/regression.at (Invalid inputs, Mixing %token styles):
+       Adjust.
+
 2002-07-09  Akim Demaille  <akim@epita.fr>
 
        * src/parse-gram.y (rules_or_grammar_declaration): Add an error
 
 Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002 Free Software Foundation, Inc.
 
-This file is part of GNU Autoconf.
+This file is part of GNU Bison.
 
-GNU Autoconf is free software; you can redistribute it and/or modify
+GNU Bison 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.
 
-GNU Autoconf is distributed in the hope that it will be useful,
+GNU Bison 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 autoconf; see the file COPYING.  If not, write to
+along with GNU Bison; see the file COPYING.  If not, write to
 the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
 Boston, MA 02111-1307, USA.
index 579cdf86c6389a3e6a991cb7807700342c31fc31..8f27b37806abbc5448ba78c8cb5d729952094ba9 100644 (file)
@@ -159,55 +159,6 @@ warn_at (location, message, va_alist)
   putc ('\n', stderr);
   fflush (stderr);
 }
-
-
-void
-#if defined VA_START && defined __STDC__
-warn (const char *message, ...)
-#else
-warn (message, va_alist)
-     char *message;
-     va_dcl
-#endif
-{
-#ifdef VA_START
-  va_list args;
-#endif
-
-  if (error_one_per_line)
-    {
-      static const char *old_infile;
-      static int old_lineno;
-
-      if (old_lineno == lineno &&
-         (infile == old_infile || !strcmp (old_infile, infile)))
-       /* Simply return and print nothing.  */
-       return;
-
-      old_infile = infile;
-      old_lineno = lineno;
-    }
-
-  fflush (stdout);
-  if (infile != NULL)
-    fprintf (stderr, "%s:%d: ", infile, lineno);
-  else
-    fprintf (stderr, "%s:", program_name);
-
-  fputs (_("warning: "), stderr);
-
-#ifdef VA_START
-  VA_START (args, message);
-  vfprintf (stderr, message, args);
-  va_end (args);
-#else
-  fprintf (stderr, message, a1, a2, a3, a4, a5, a6, a7, a8);
-#endif
-
-  ++warn_message_count;
-  putc ('\n', stderr);
-  fflush (stderr);
-}
 \f
 /*-----------------------------------------------------------.
 | An error has occurred, but we can proceed, and die later.  |
@@ -257,53 +208,6 @@ complain_at (location, message, va_alist)
   putc ('\n', stderr);
   fflush (stderr);
 }
-
-
-void
-#if defined VA_START && defined __STDC__
-complain (const char *message, ...)
-#else
-complain (message, va_alist)
-     char *message;
-     va_dcl
-#endif
-{
-#ifdef VA_START
-  va_list args;
-#endif
-
-  if (error_one_per_line)
-    {
-      static const char *old_infile;
-      static int old_lineno;
-
-      if (old_lineno == lineno &&
-         (infile == old_infile || !strcmp (old_infile, infile)))
-       /* Simply return and print nothing.  */
-       return;
-
-      old_infile = infile;
-      old_lineno = lineno;
-    }
-
-  fflush (stdout);
-  if (infile != NULL)
-    fprintf (stderr, "%s:%d: ", infile, lineno);
-  else
-    fprintf (stderr, "%s:", program_name);
-
-#ifdef VA_START
-  VA_START (args, message);
-  vfprintf (stderr, message, args);
-  va_end (args);
-#else
-  fprintf (stderr, message, a1, a2, a3, a4, a5, a6, a7, a8);
-#endif
-
-  ++complain_message_count;
-  putc ('\n', stderr);
-  fflush (stderr);
-}
 \f
 /*-------------------------------------------------.
 | A severe error has occurred, we cannot proceed.  |
@@ -354,10 +258,7 @@ fatal (message, va_alist)
 #endif
 
   fflush (stdout);
-  if (infile != NULL)
-    fprintf (stderr, "%s:%d: ", infile, lineno);
-  else
-    fprintf (stderr, "%s:", program_name);
+  fprintf (stderr, "%s: ", infile ? infile : program_name);
 
   fputs (_("fatal error: "), stderr);
 
index 34aa70b25b754b9f3bb35dbe3d83989a1b06b704..c2ae09dd43c37dace21de8eee13d7cda2d53f8f5 100644 (file)
@@ -29,17 +29,11 @@ extern "C" {
 
 /* Informative messages, but we proceed. */
 
-void warn (const char *format, ...)
-  __attribute__ ((__format__ (__printf__, 1, 2)));
-
 void warn_at (location_t location, const char *format, ...)
   __attribute__ ((__format__ (__printf__, 2, 3)));
 
 /* Something bad happen, but let's continue and die later. */
 
-void complain (const char *format, ...)
-  __attribute__ ((__format__ (__printf__, 1, 2)));
-
 void complain_at (location_t location, const char *format, ...)
   __attribute__ ((__format__ (__printf__, 2, 3)));
 
@@ -52,9 +46,7 @@ void fatal_at (location_t location, const char *format, ...)
   __attribute__ ((__format__ (__printf__, 2, 3)));
 
 # else
-void warn ();
 void warn_at ();
-void complain ();
 void complain_at ();
 void fatal ();
 void fatal_at ();
@@ -62,7 +54,6 @@ void fatal_at ();
 
 /* Position in the current input file. */
 extern char *infile;
-extern int lineno;
 
 /* This variable is incremented each time `warn' is called.  */
 extern unsigned int warn_message_count;
index 5a0fb45825027bec735d97dbf48495117482fe98..40566e9cc1bb09b08e9fe22a9d68a1f624b47050 100644 (file)
@@ -51,7 +51,6 @@ main (int argc, char *argv[])
   bindtextdomain (PACKAGE, LOCALEDIR);
   textdomain (PACKAGE);
 
-  lineno = 0;
   getargs (argc, argv);
 
   if (trace_flag)
index 5c7a8f1fcd6500fbae5a3b0787249bfa346e5d67..175ca0f9c84673ac326ee92b31f6c7105f37e39a 100644 (file)
@@ -1390,7 +1390,7 @@ yyreduce:
     {
       symbol_class_set (yyvsp[-1].symbol, current_class, yylsp[-1]);
       symbol_type_set (yyvsp[-1].symbol, current_type, yylsp[-1]);
-      symbol_make_alias (yyvsp[-1].symbol, yyvsp[0].symbol);
+      symbol_make_alias (yyvsp[-1].symbol, yyvsp[0].symbol, yyloc);
     }
     break;
 
@@ -1400,7 +1400,7 @@ yyreduce:
       symbol_class_set (yyvsp[-2].symbol, current_class, yylsp[-2]);
       symbol_type_set (yyvsp[-2].symbol, current_type, yylsp[-2]);
       symbol_user_token_number_set (yyvsp[-2].symbol, yyvsp[-1].integer, yylsp[-1]);
-      symbol_make_alias (yyvsp[-2].symbol, yyvsp[0].symbol);
+      symbol_make_alias (yyvsp[-2].symbol, yyvsp[0].symbol, yyloc);
     }
     break;
 
index a6b8f3b14435ffb9870cc3c0c5a16883b7fe8315..c29bc529e780021f4283b8727d4752d474a41107 100644 (file)
@@ -304,14 +304,14 @@ symbol_def:
     {
       symbol_class_set ($1, current_class, @1);
       symbol_type_set ($1, current_type, @1);
-      symbol_make_alias ($1, $2);
+      symbol_make_alias ($1, $2, @$);
     }
 | ID INT string_as_id
     {
       symbol_class_set ($1, current_class, @1);
       symbol_type_set ($1, current_type, @1);
       symbol_user_token_number_set ($1, $2, @2);
-      symbol_make_alias ($1, $3);
+      symbol_make_alias ($1, $3, @$);
     }
 ;
 
index 7cf153fc6ee62b0976512c013da9190505038711..86f3adf4d4fca3082a869b47fa2663cd37d4dda1 100644 (file)
@@ -34,7 +34,6 @@
 #include "conflicts.h"
 #include "muscle_tab.h"
 
-int lineno;
 static symbol_list_t *grammar = NULL;
 static int start_flag = 0;
 merger_list *merge_functions;
@@ -113,7 +112,8 @@ epilogue_set (const char *epilogue, location_t location)
 `-------------------------------------------------------------------*/
 
 static int
-get_merge_function (const char* name, const char* type)
+get_merge_function (const char* name, const char* type,
+                   location_t loc)
 {
   merger_list *syms;
   merger_list head;
@@ -129,15 +129,17 @@ get_merge_function (const char* name, const char* type)
   for (syms = &head, n = 1; syms->next != NULL; syms = syms->next, n += 1)
     if (strcmp (name, syms->next->name) == 0)
       break;
-  if (syms->next == NULL) {
-    syms->next = XMALLOC (merger_list, 1);
-    syms->next->name = strdup (name);
-    syms->next->type = strdup (type);
-    syms->next->next = NULL;
-    merge_functions = head.next;
-  } else if (strcmp (type, syms->next->type) != 0)
-    warn (_("result type clash on merge function %s: `%s' vs. `%s'"),
-         name, type, syms->next->type);
+  if (syms->next == NULL)
+    {
+      syms->next = XMALLOC (merger_list, 1);
+      syms->next->name = strdup (name);
+      syms->next->type = strdup (type);
+      syms->next->next = NULL;
+      merge_functions = head.next;
+    }
+  else if (strcmp (type, syms->next->type) != 0)
+    warn_at (loc, _("result type clash on merge function %s: `%s' vs. `%s'"),
+            name, type, syms->next->type);
   return n;
 }
 
@@ -367,7 +369,7 @@ grammar_current_rule_merge_set (const char* name, location_t location)
   if (current_rule->merger != 0)
     complain_at (location, _("only one %%merge allowed per rule"));
   current_rule->merger =
-    get_merge_function (name, current_rule->sym->type_name);
+    get_merge_function (name, current_rule->sym->type_name, location);
 }
 
 /* Attach a SYMBOL to the current rule.  If needed, move the previous
@@ -469,7 +471,6 @@ void
 reader (void)
 {
   gram_control_t gram_control;
-  lineno = 1;
 
   /* Initialize the symbol table.  */
   symbols_new ();
index 41f2812fdcfed5cb00a8d67fe560792aebbcba5d..a107a68aaa76b20c875d66f41e176cf57075719b 100644 (file)
@@ -768,7 +768,7 @@ do {                                                \
 } while (0)
 
 #define YY_USER_ACTION  LOCATION_COLUMNS (*yylloc, yyleng)
-#define YY_LINES        LOCATION_LINES (*yylloc, yyleng); lineno += yyleng;
+#define YY_LINES        LOCATION_LINES (*yylloc, yyleng);
 #define YY_STEP         LOCATION_STEP (*yylloc)
 
 /* STRING_OBSTACK -- Used to store all the characters that we need to
index 68d22afe7d5bd903306e239b122c4b176e0dbb53..7c4b3487b998e126887655ef3fee370058b26da6 100644 (file)
@@ -39,7 +39,7 @@ do {                                          \
 } while (0)
 
 #define YY_USER_ACTION  LOCATION_COLUMNS (*yylloc, yyleng)
-#define YY_LINES        LOCATION_LINES (*yylloc, yyleng); lineno += yyleng;
+#define YY_LINES        LOCATION_LINES (*yylloc, yyleng);
 #define YY_STEP         LOCATION_STEP (*yylloc)
 
 /* STRING_OBSTACK -- Used to store all the characters that we need to
index 0a9d6baac4c796da342145fcac44f0538ba04c29..afc0c1c8b52a0657ab0d072448164510bd75a60c 100644 (file)
@@ -238,13 +238,13 @@ symbol_check_defined (symbol_t *this)
 `-------------------------------------------------------------------*/
 
 void
-symbol_make_alias (symbol_t *symbol, symbol_t *symval)
+symbol_make_alias (symbol_t *symbol, symbol_t *symval, location_t loc)
 {
   if (symval->alias)
-    warn (_("symbol `%s' used more than once as a literal string"),
+    warn_at (loc, _("symbol `%s' used more than once as a literal string"),
          symval->tag);
   else if (symbol->alias)
-    warn (_("symbol `%s' given more than one literal string"),
+    warn_at (loc, _("symbol `%s' given more than one literal string"),
          symbol->tag);
   else
     {
@@ -277,8 +277,9 @@ symbol_check_alias_consistence (symbol_t *this)
       if (this->prec != this->alias->prec)
        {
          if (this->prec != 0 && this->alias->prec != 0)
-           complain (_("conflicting precedences for %s and %s"),
-                     this->tag, this->alias->tag);
+           complain_at (this->alias->location,
+                        _("conflicting precedences for %s and %s"),
+                        this->tag, this->alias->tag);
          if (this->prec != 0)
            this->alias->prec = this->prec;
          else
@@ -292,8 +293,9 @@ symbol_check_alias_consistence (symbol_t *this)
             not nice, fix this!  */
          if (this->assoc != right_assoc
              && this->alias->assoc != right_assoc)
-           complain (_("conflicting associativities for %s and %s"),
-                     this->tag, this->alias->tag);
+           complain_at (this->alias->location,
+                        _("conflicting associativities for %s and %s"),
+                        this->tag, this->alias->tag);
          if (this->assoc != 0)
            this->alias->assoc = this->assoc;
          else
@@ -360,9 +362,10 @@ symbol_translation (symbol_t *this)
     {
       /* A token which translation has already been set? */
       if (token_translations[this->user_token_number] != undeftoken->number)
-       complain (_("tokens %s and %s both assigned number %d"),
-                 symbols[token_translations[this->user_token_number]]->tag,
-                 this->tag, this->user_token_number);
+       complain_at (this->location,
+                    _("tokens %s and %s both assigned number %d"),
+                    symbols[token_translations[this->user_token_number]]->tag,
+                    this->tag, this->user_token_number);
 
       token_translations[this->user_token_number] = this->number;
     }
index 5fa705937dc04a4388599e70744e0eb2d61e72b8..4dd463f37b902ff3634c58993a18bf8d1fd45339 100644 (file)
@@ -99,7 +99,8 @@ symbol_t *symbol_get PARAMS ((const char *key, location_t location));
 symbol_t *dummy_symbol_get PARAMS ((location_t location));
 
 /* Declare the new SYMBOL.  Make it an alias of SYMVAL.  */
-void symbol_make_alias PARAMS ((symbol_t *symbol, symbol_t *symval));
+void symbol_make_alias PARAMS ((symbol_t *symbol, symbol_t *symval,
+                               location_t location));
 
 /* Set the TYPE_NAME associated to SYMBOL. Does nothing if passed 0 as
    TYPE_NAME.  */
index e68d92775d5870d75e69d849a563ce90208fbfa2..352d7042e5282b84942bf69fdde45abe68bd6b76 100644 (file)
@@ -100,7 +100,7 @@ exp: '(' exp ')' | NUM ;
 ]])
 
 AT_CHECK([bison -v input.y -o input.c], 0, [],
-[[input.y:6: warning: symbol `"<="' used more than once as a literal string
+[[input.y:6.8-14: warning: symbol `"<="' used more than once as a literal string
 ]])
 
 AT_CLEANUP
@@ -299,7 +299,6 @@ input.y:6.1: invalid character: `%'
 input.y:6.2: invalid character: `-'
 input.y:7.1-8.0: unexpected end of file in a prologue
 input.y:7.1-8.0: parse error, unexpected PROLOGUE, expecting ";" or "|"
-input.y:5.2: symbol a is used, but is not defined as a token and has no rules
 ]])
 
 AT_CLEANUP