]> git.saurik.com Git - bison.git/commitdiff
* src/reader.c (readgram): Don't add the rule 0 if there were no
authorAkim Demaille <akim@epita.fr>
Sat, 29 Dec 2001 14:17:43 +0000 (14:17 +0000)
committerAkim Demaille <akim@epita.fr>
Sat, 29 Dec 2001 14:17:43 +0000 (14:17 +0000)
rules read.  In other words, add it _after_ having performed
grammar sanity checks.
Fixes the `tests/regression.at (Invalid input: 1)' Failure.

ChangeLog
src/reader.c

index c0d5aa94f5163e410ce1e46f716ee6239f62cbe0..df10e43f661cd3e712d1eed0f3477a12def90da7 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,11 @@
+2001-12-29  Akim Demaille  <akim@epita.fr>
+
+       * src/reader.c (readgram): Don't add the rule 0 if there were no
+       rules read.  In other words, add it _after_ having performed
+       grammar sanity checks.
+       Fixes the `tests/regression.at (Invalid input: 1)' Failure.
+
+       
 2001-12-29  Akim Demaille  <akim@epita.fr>
 
        * tests/regression.at (Web2c Report): Catch up: the rule 0 is now
index fcfb2c9460e0c625e41df03b23a32c153d378630..bebbc1539b494ff3ab31b817aa1a9b3d36c029c8 100644 (file)
@@ -1451,6 +1451,23 @@ readgram (void)
        t = lex ();
       }
 
+  /* grammar has been read.  Do some checking */
+
+  if (nrules == 0)
+    fatal (_("no rules in the input grammar"));
+
+  /* Report any undefined symbols and consider them nonterminals.  */
+
+  for (bp = firstsymbol; bp; bp = bp->next)
+    if (bp->class == unknown_sym)
+      {
+       complain (_
+                 ("symbol %s is used, but is not defined as a token and has no rules"),
+                 bp->tag);
+       bp->class = nterm_sym;
+       bp->value = nvars++;
+      }
+
   /* Insert the initial rule, which line is that of the first rule
      (not that of the start symbol):
 
@@ -1466,25 +1483,9 @@ readgram (void)
   grammar = p;
   startval = axiom;
 
-  /* grammar has been read.  Do some checking */
-
   if (nsyms > MAXSHORT)
     fatal (_("too many symbols (tokens plus nonterminals); maximum %d"),
           MAXSHORT);
-  if (nrules == 0)
-    fatal (_("no rules in the input grammar"));
-
-  /* Report any undefined symbols and consider them nonterminals.  */
-
-  for (bp = firstsymbol; bp; bp = bp->next)
-    if (bp->class == unknown_sym)
-      {
-       complain (_
-                 ("symbol %s is used, but is not defined as a token and has no rules"),
-                 bp->tag);
-       bp->class = nterm_sym;
-       bp->value = nvars++;
-      }
 
   ntokens = nsyms - nvars;
 }