(conflict_row, pack_vector): Use abort rather than assert.

(tables_generate): Use verify rather than assert.
This commit is contained in:
Paul Eggert
2002-11-21 05:25:55 +00:00
parent 87aabbff99
commit 443594d0c4

View File

@@ -1,4 +1,4 @@
/* Output the generated parsing program for bison, /* Output the generated parsing program for Bison.
Copyright (C) 1984, 1986, 1989, 1992, 2000, 2001, 2002 Copyright (C) 1984, 1986, 1989, 1992, 2000, 2001, 2002
Free Software Foundation, Inc. Free Software Foundation, Inc.
@@ -33,9 +33,9 @@
#include "conflicts.h" #include "conflicts.h"
#include "tables.h" #include "tables.h"
/* Several tables will be indexed both by state and nonterminal /* Several tables are indexed both by state and nonterminal numbers.
numbers. We call `vector' such a thing (= either a state or a We call such an index a `vector'; i.e., a vector is either a state
symbol number. or a nonterminal number.
Of course vector_number_t ought to be wide enough to contain Of course vector_number_t ought to be wide enough to contain
state_number_t and symbol_number_t. */ state_number_t and symbol_number_t. */
@@ -190,14 +190,16 @@ conflict_row (state_t *state)
&& (actrow[j] && (actrow[j]
!= rule_number_as_item_number (reds->rules[i]->number))) != rule_number_as_item_number (reds->rules[i]->number)))
{ {
assert (conflict_list_free > 0); if (conflict_list_free <= 0)
abort ();
conflict_list[conflict_list_cnt] = reds->rules[i]->number + 1; conflict_list[conflict_list_cnt] = reds->rules[i]->number + 1;
conflict_list_cnt += 1; conflict_list_cnt += 1;
conflict_list_free -= 1; conflict_list_free -= 1;
} }
/* Leave a 0 at the end. */ /* Leave a 0 at the end. */
assert (conflict_list_free > 0); if (conflict_list_free <= 0)
abort ();
conflict_list_cnt += 1; conflict_list_cnt += 1;
conflict_list_free -= 1; conflict_list_free -= 1;
} }
@@ -654,13 +656,17 @@ pack_vector (vector_number_t vector)
base_t *to = tos[i]; base_t *to = tos[i];
unsigned int *conflict_to = conflict_tos[i]; unsigned int *conflict_to = conflict_tos[i];
assert (t); if (! t)
abort ();
for (j = lowzero - from[0]; j < (int) table_size; j++) for (j = lowzero - from[0]; ; j++)
{ {
int k; int k;
int ok = 1; int ok = 1;
if ((int) table_size <= j)
abort ();
for (k = 0; ok && k < t; k++) for (k = 0; ok && k < t; k++)
{ {
loc = j + state_number_as_int (from[k]); loc = j + state_number_as_int (from[k]);
@@ -692,13 +698,11 @@ pack_vector (vector_number_t vector)
if (loc > high) if (loc > high)
high = loc; high = loc;
assert (BASE_MIN <= j && j <= BASE_MAX); if (! (BASE_MIN <= j && j <= BASE_MAX))
abort ();
return j; return j;
} }
} }
#define pack_vector_succeeded 0
assert (pack_vector_succeeded);
return 0;
} }
@@ -784,11 +788,12 @@ tables_generate (void)
{ {
int i; int i;
/* That's a poor way to make sure the sizes are properly corelated, /* This is a poor way to make sure the sizes are properly
in particular the signedness is not taking into account, but it's correlated. In particular the signedness is not taken into
not useless. */ account. But it's not useless. */
assert (sizeof (nvectors) >= sizeof (nstates)); verify (sizes_are_properly_correlated,
assert (sizeof (nvectors) >= sizeof (nvars)); (sizeof nstates <= sizeof nvectors
&& sizeof nvars <= sizeof nvectors));
nvectors = state_number_as_int (nstates) + nvars; nvectors = state_number_as_int (nstates) + nvars;