bug-bison
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: MAXTABLE & Serious issues with bison 1.30


From: Akim Demaille
Subject: Re: MAXTABLE & Serious issues with bison 1.30
Date: 03 Jan 2002 11:19:51 +0100
User-agent: Gnus/5.0808 (Gnus v5.8.8) XEmacs/21.4 (Common Lisp)

>>>>> "Akim" == Akim Demaille <address@hidden> writes:

Akim> Sorry, I was pretty unclear: I meant what Bison limit is hit?
Akim> Number of rules, number of items, number of symbols, number of
Akim> gotos etc.  But you seem to have given a grammar, I'll have a
Akim> look myself, thanks!

Well, CVS Bison seems to be OK with it :)

~/src/bison-exp % LANG=C tests/bison /tmp/i4gl.y                 nostromo Err 1
/tmp/i4gl.y contains 31 useless nonterminals and 52 useless rules
/tmp/i4gl.y contains 1059 shift/reduce conflicts and 617 reduce/reduce 
conflicts.
/tmp/i4gl.y:4110: fatal error: maximum table size (32767) exceeded

Wow, it is a limitation I had never seen hit before:

~/src/bison-exp % gdb src/bison                                  nostromo Err 1
GNU gdb 5.0
Copyright 2000 Free Software Foundation, Inc.
GDB is free software, covered by the GNU General Public License, and you are
welcome to change it and/or distribute copies of it under certain conditions.
Type "show copying" to see the conditions.
There is absolutely no warranty for GDB.  Type "show warranty" for details.
This GDB was configured as "i686-pc-linux-gnu"...
(gdb) b fatal
Breakpoint 1 at 0x804a3b2: file complain.c, line 232.
(gdb) run /tmp/i4gl.y
Starting program: /home/akim/src/bison-exp/src/bison /tmp/i4gl.y
/tmp/i4gl.y contient 31 useless nonterminals et 52 useless rules
/tmp/i4gl.y contient 1059 shift/reduce conflicts and 617 reduce/reduce 
conflicts.

Breakpoint 1, fatal (
    message=0x4017db26 "taille maximale de la table (%d) dépassée")
    at complain.c:232
232       fflush (stdout);
(gdb) up
#1  0x8051015 in pack_vector (vector=452) at output.c:804
804                 fatal (_("maximum table size (%d) exceeded"), MAXTABLE);
(gdb) l
799     
800           for (k = 0; ok && k < t; k++)
801             {
802               loc = j + from[k];
803               if (loc > MAXTABLE)
804                 fatal (_("maximum table size (%d) exceeded"), MAXTABLE);
805     
806               if (table[loc] != 0)
807                 ok = 0;
808             }



We are in trouble...  OTOH, since you seem to say doubling is enough,
we might be OK just by moving to unsigned.

Are you in a hurry?

How was this grammar handled before?



BTW, 1.3x seems OK too:

~/src/bison-1.29 % tests/bison /tmp/i4gl.y                       nostromo 11:17
/tmp/i4gl.y contient 31 useless nonterminals et 52 useless rules
/tmp/i4gl.y contient 1059 shift/reduce conflicts and 617 reduce/reduce 
conflicts.
/tmp/i4gl.y:4110: erreur fatale: taille maximale de la table (32767) dépassée



reply via email to

[Prev in Thread] Current Thread [Next in Thread]