/* Type definitions for nondeterministic finite state machine for Bison.
- Copyright (C) 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
+ Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006 Free Software
+ Foundation, Inc.
This file is part of Bison, the GNU Compiler Compiler.
You should have received a copy of the GNU General Public License
along with Bison; see the file COPYING. If not, write to
- the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- Boston, MA 02111-1307, USA. */
-
+ the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ Boston, MA 02110-1301, USA. */
+#include <config.h>
#include "system.h"
#include <hash.h>
transitions_to (transitions *shifts, symbol_number sym)
{
int j;
- for (j = 0; j < shifts->num; j++)
- if (TRANSITION_SYMBOL (shifts, j) == sym)
- return shifts->states[j];
- abort ();
+ for (j = 0; ; j++)
+ {
+ assert (j < shifts->num);
+ if (TRANSITION_SYMBOL (shifts, j) == sym)
+ return shifts->states[j];
+ }
}
state *res;
size_t items_size = nitems * sizeof *core;
- if (STATE_NUMBER_MAXIMUM <= nstates)
- abort ();
+ assert (nstates < STATE_NUMBER_MAXIMUM);
res = xmalloc (offsetof (state, items) + items_size);
res->number = nstates++;
void
state_transitions_set (state *s, int num, state **trans)
{
- if (s->transitions)
- abort ();
+ assert (!s->transitions);
s->transitions = transitions_new (num, trans);
}
void
state_reductions_set (state *s, int num, rule **reds)
{
- if (s->reductions)
- abort ();
+ assert (!s->reductions);
s->reductions = reductions_new (num, reds);
}
void
state_errs_set (state *s, int num, symbol **tokens)
{
- if (s->errs)
- abort ();
+ assert (!s->errs);
s->errs = errs_new (num, tokens);
}
}
-/*----------------------.
+/*---------------------.
| A state hash table. |
-`----------------------*/
+`---------------------*/
/* Initial capacity of states hash table. */
#define HT_INITIAL_CAPACITY 257
static inline bool
state_compare (state const *s1, state const *s2)
{
- int i;
+ size_t i;
if (s1->nitems != s2->nitems)
return false;
{
/* Add up the state's item numbers to get a hash key. */
size_t key = 0;
- int i;
+ size_t i;
for (i = 0; i < s->nitems; ++i)
key += s->items[i];
return key % tablesize;