[Top][All Lists]
[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