]> git.saurik.com Git - bison.git/commitdiff
* src/reader.c (parse_thong_decl): Formatting changes.
authorAkim Demaille <akim@epita.fr>
Fri, 2 Nov 2001 14:02:31 +0000 (14:02 +0000)
committerAkim Demaille <akim@epita.fr>
Fri, 2 Nov 2001 14:02:31 +0000 (14:02 +0000)
(token_translations_init): New, extracted from...
(packsymbols): Here.
Adjust.

ChangeLog
NEWS
THANKS
src/reader.c

index 72910f55ad43e3cdff7ef23c4ab253ea1449a44d..01b129f0e460bb9a0c8d67aa881a6ebb703cba23 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,10 @@
+2001-11-02  Akim Demaille  <akim@epita.fr>
+
+       * src/reader.c (parse_thong_decl): Formatting changes.
+       (token_translations_init): New, extracted from...
+       (packsymbols): Here.
+       Adjust.
+
 2001-11-01  Akim Demaille  <akim@epita.fr>
 
        * tests/regression.at (AT_TEST_CPP_GUARD_H): New.
 2001-11-01  Akim Demaille  <akim@epita.fr>
 
        * tests/regression.at (AT_TEST_CPP_GUARD_H): New.
diff --git a/NEWS b/NEWS
index 5c44ae3e45cc18adf91f8ef6b01a3af3d183a488..662c129b6aa82bb6a29ee7c6b08a7b7fb9493a9b 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -2,6 +2,10 @@ Bison News
 ----------
 
 Changes in version 1.30a:
 ----------
 
 Changes in version 1.30a:
+
+* Fixed incorrect processing of some invalid input.
+
+* Fixed CPP guards: 9foo.h uses BISON_9FOO_H instead of 9FOO_H.
 \f
 Changes in version 1.30:
 
 \f
 Changes in version 1.30:
 
diff --git a/THANKS b/THANKS
index 2890b4627f2e6a7e00074f1ebc339d57c6a50b66..e74019f0aaf9a452d6e39d953b8bf9c5020abb95 100644 (file)
--- a/THANKS
+++ b/THANKS
@@ -7,6 +7,7 @@ Albert Chin-A-Young     china@thewrittenword.com
 Alexander Belopolsky    alexb@rentec.com
 Daniel Hagerty          hag@gnu.org
 David J. MacKenzie      djm@gnu.org
 Alexander Belopolsky    alexb@rentec.com
 Daniel Hagerty          hag@gnu.org
 David J. MacKenzie      djm@gnu.org
+Dick Streefland                dick.streefland@altium.nl
 Fabrice Bauzac          noon@cote-dazur.com
 Hans Aberg              haberg@matematik.su.se
 Jesse Thilo             jthilo@gnu.org
 Fabrice Bauzac          noon@cote-dazur.com
 Hans Aberg              haberg@matematik.su.se
 Jesse Thilo             jthilo@gnu.org
index 5731bf8f1883ac0efa5ed869663240274e87fec0..6c7a9eec7699ceadbe1184c4a121594f18f97b33 100644 (file)
@@ -1,5 +1,5 @@
 /* Input parser for bison
 /* Input parser for bison
-   Copyright 1984, 1986, 1989, 1992, 1998, 2000
+   Copyright 1984, 1986, 1989, 1992, 1998, 2000, 2001
    Free Software Foundation, Inc.
 
    This file is part of Bison, the GNU Compiler Compiler.
    Free Software Foundation, Inc.
 
    This file is part of Bison, the GNU Compiler Compiler.
@@ -821,7 +821,7 @@ parse_thong_decl (void)
   token_t token;
   struct bucket *symbol;
   char *typename = 0;
   token_t token;
   struct bucket *symbol;
   char *typename = 0;
-  int usrtoknum;
+  int usrtoknum = 0;
 
   token = lex ();              /* fetch typename or first token */
   if (token == tok_typename)
 
   token = lex ();              /* fetch typename or first token */
   if (token == tok_typename)
@@ -852,8 +852,6 @@ parse_thong_decl (void)
       usrtoknum = numval;
       token = lex ();          /* okay, did number, now get literal */
     }
       usrtoknum = numval;
       token = lex ();          /* okay, did number, now get literal */
     }
-  else
-    usrtoknum = 0;
 
   /* process literal string token */
 
 
   /* process literal string token */
 
@@ -875,10 +873,11 @@ parse_thong_decl (void)
 }
 
 
 }
 
 
-/*-----------------------------------------------------------------------------.
-| Parse a double quoted parameter. It was used for %{source,header}_extension. |
-| For the moment, It is not used since extension features have been removed.   |
-`-----------------------------------------------------------------------------*/
+/*------------------------------------------------------------------.
+| Parse a double quoted parameter. It was used for                  |
+| %{source,header}_extension.  For the moment, It is not used since |
+| extension features have been removed.                             |
+`------------------------------------------------------------------*/
 
 #if 0
 
 
 #if 0
 
@@ -1663,6 +1662,43 @@ output_token_defines (struct obstack *oout)
 }
 
 
 }
 
 
+/*------------------------------------------------------------------.
+| Set TOKEN_TRANSLATIONS.  Check that no two symbols share the same |
+| number.                                                           |
+`------------------------------------------------------------------*/
+
+static void
+token_translations_init (void)
+{
+  bucket *bp = NULL;
+  int i;
+
+  token_translations = XCALLOC (short, max_user_token_number + 1);
+
+  /* Initialize all entries for literal tokens to 2, the internal
+     token number for $undefined., which represents all invalid
+     inputs.  */
+  for (i = 0; i <= max_user_token_number; i++)
+    token_translations[i] = 2;
+
+  for (bp = firstsymbol; bp; bp = bp->next)
+    {
+      /* Non-terminal? */
+      if (bp->value >= ntokens)
+       continue;
+      /* A token string alias? */
+      if (bp->user_token_number == SALIAS)
+       continue;
+      /* A token which translation has already been set? */
+      if (token_translations[bp->user_token_number] != 2)
+       complain (_("tokens %s and %s both assigned number %d"),
+                 tags[token_translations[bp->user_token_number]],
+                 bp->tag, bp->user_token_number);
+      token_translations[bp->user_token_number] = bp->value;
+    }
+}
+
+
 /*------------------------------------------------------------------.
 | Assign symbol numbers, and write definition of token names into   |
 | FDEFINES.  Set up vectors TAGS and SPREC of names and precedences |
 /*------------------------------------------------------------------.
 | Assign symbol numbers, and write definition of token names into   |
 | FDEFINES.  Set up vectors TAGS and SPREC of names and precedences |
@@ -1674,20 +1710,19 @@ packsymbols (void)
 {
   bucket *bp = NULL;
   int tokno = 1;
 {
   bucket *bp = NULL;
   int tokno = 1;
-  int i, j;
   int last_user_token_number;
   static char DOLLAR[] = "$";
 
   int last_user_token_number;
   static char DOLLAR[] = "$";
 
-  /* int lossage = 0; JF set but not used */
-
   tags = XCALLOC (char *, nsyms + 1);
   tags = XCALLOC (char *, nsyms + 1);
-  tags[0] = DOLLAR;
   user_toknums = XCALLOC (short, nsyms + 1);
   user_toknums = XCALLOC (short, nsyms + 1);
-  user_toknums[0] = 0;
 
   sprec = XCALLOC (short, nsyms);
   sassoc = XCALLOC (short, nsyms);
 
 
   sprec = XCALLOC (short, nsyms);
   sassoc = XCALLOC (short, nsyms);
 
+  /* The EOF token. */
+  tags[0] = DOLLAR;
+  user_toknums[0] = 0;
+
   max_user_token_number = 256;
   last_user_token_number = 256;
 
   max_user_token_number = 256;
   last_user_token_number = 256;
 
@@ -1740,7 +1775,7 @@ packsymbols (void)
 
       if (bp->class == token_sym)
        {
 
       if (bp->class == token_sym)
        {
-         if (!bp->user_token_number)
+         if (bp->user_token_number == 0)
            bp->user_token_number = ++last_user_token_number;
          if (bp->user_token_number > max_user_token_number)
            max_user_token_number = bp->user_token_number;
            bp->user_token_number = ++last_user_token_number;
          if (bp->user_token_number > max_user_token_number)
            max_user_token_number = bp->user_token_number;
@@ -1752,26 +1787,7 @@ packsymbols (void)
       sassoc[bp->value] = bp->assoc;
     }
 
       sassoc[bp->value] = bp->assoc;
     }
 
-  token_translations = XCALLOC (short, max_user_token_number + 1);
-
-  /* initialize all entries for literal tokens to 2, the internal
-     token number for $undefined., which represents all invalid
-     inputs.  */
-  for (j = 0; j <= max_user_token_number; j++)
-    token_translations[j] = 2;
-
-  for (bp = firstsymbol; bp; bp = bp->next)
-    {
-      if (bp->value >= ntokens)
-       continue;               /* non-terminal */
-      if (bp->user_token_number == SALIAS)
-       continue;
-      if (token_translations[bp->user_token_number] != 2)
-       complain (_("tokens %s and %s both assigned number %d"),
-                 tags[token_translations[bp->user_token_number]],
-                 bp->tag, bp->user_token_number);
-      token_translations[bp->user_token_number] = bp->value;
-    }
+  token_translations_init ();
 
   error_token_number = errtoken->value;
 
 
   error_token_number = errtoken->value;
 
@@ -1800,19 +1816,23 @@ packsymbols (void)
        }
 
       if (semantic_parser)
        }
 
       if (semantic_parser)
-       for (i = ntokens; i < nsyms; i++)
-         {
-           /* don't make these for dummy nonterminals made by gensym.  */
-           if (*tags[i] != '@')
-              obstack_fgrow2 (&defines_obstack,
-                              "# define\tNT%s\t%d\n", tags[i], i);
-         }
+       {
+         int i;
+
+         for (i = ntokens; i < nsyms; i++)
+           {
+             /* don't make these for dummy nonterminals made by gensym.  */
+             if (*tags[i] != '@')
+               obstack_fgrow2 (&defines_obstack,
+                               "# define\tNT%s\t%d\n", tags[i], i);
+           }
 #if 0
 #if 0
-      /* `fdefines' is now a temporary file, so we need to copy its
-         contents in `done', so we can't close it here.  */
-      fclose (fdefines);
-      fdefines = NULL;
+         /* `fdefines' is now a temporary file, so we need to copy its
+            contents in `done', so we can't close it here.  */
+         fclose (fdefines);
+         fdefines = NULL;
 #endif
 #endif
+       }
     }
 }
 
     }
 }