Bison dumps core on bash.y.

Reported by Pascal Bart.
* src/warshall.c (bitmatrix_print): New.
(TC): Use it.
When performing a transitive closure R(i, j) && R(j, k) => R(i,	k),
j must be the outer loop.
* tests/regression.at (Broken Closure): New.
This commit is contained in:
Akim Demaille
2001-12-10 08:44:49 +00:00
parent 07708e1946
commit 74ffbcb6bf
3 changed files with 143 additions and 2 deletions

View File

@@ -611,3 +611,78 @@ AT_CLEANUP
AT_TEST_CPP_GUARD_H([input/input])
AT_TEST_CPP_GUARD_H([9foo])
## ---------------- ##
## Broken Closure. ##
## ---------------- ##
# TC was once broken during a massive `simplification' of the code.
# It resulted in bison dumping core on the following grammar (the
# computation of FIRSTS uses TC). It managed to produce a pretty
# exotic closure:
#
# TC: Input
#
# 01234567
# +--------+
# 0| 1 |
# 1| 1 |
# 2| 1 |
# 3| 1 |
# 4| 1 |
# 5| 1 |
# 6| 1|
# 7| |
# +--------+
#
# TC: Output
#
# 01234567
# +--------+
# 0| 1 |
# 1| 111 |
# 2| 111 |
# 3| 1111 |
# 4| 111 1 |
# 5| 111 1 |
# 6| 111 1|
# 7| 111 |
# +--------+
#
# instead of that below.
AT_SETUP([Broken Closure])
AT_DATA([input.y],
[[%%
a: b
b: c
c: d
d: e
e: f
f: g
g: h
h: 'h'
]])
AT_CHECK([bison --trace input.y 2>&1 |
sed -n '/^TC: Output BEGIN/,/^TC: Output END/p'],
[0],
[[TC: Output BEGIN
@&t@
01234567
+--------+
0| 1111111|
1| 111111|
2| 11111|
3| 1111|
4| 111|
5| 11|
6| 1|
7| |
+--------+
TC: Output END
]])
AT_CLEANUP