/* Compute look-ahead criteria for Bison.
- Copyright (C) 1984, 1986, 1989, 2000, 2001, 2002, 2003, 2004
- Free Software Foundation, Inc.
+ Copyright (C) 1984, 1986, 1989, 2000, 2001, 2002, 2003, 2004, 2005,
+ 2006 Free Software Foundation, Inc.
This file is part of Bison, the GNU Compiler Compiler.
which rules need look-ahead in each state, and which look-ahead
tokens they accept. */
+#include <config.h>
#include "system.h"
#include <bitset.h>
ngotos++;
/* Abort if (ngotos + 1) would overflow. */
- if (ngotos == GOTO_NUMBER_MAXIMUM)
- abort ();
+ assert (ngotos != GOTO_NUMBER_MAXIMUM);
goto_map[TRANSITION_SYMBOL (sp, i) - ntokens]++;
}
for (;;)
{
- if (high < low)
- abort ();
+ assert (low <= high);
middle = (low + high) / 2;
s = from_state[middle];
if (s == s0)
{
bool done;
int length = 1;
- item_number *rp;
+ item_number const *rp;
state *s = states[from_state[i]];
states1[0] = s->number;
- for (rp = (*rulep)->rhs; *rp >= 0; rp++)
+ for (rp = (*rulep)->rhs; ! item_number_is_rule_number (*rp); rp++)
{
s = transitions_to (s->transitions,
item_number_as_symbol_number (*rp));
while (!done)
{
done = true;
+ /* Each rhs ends in an item number, and there is a
+ sentinel before the first rhs, so it is safe to
+ decrement RP here. */
rp--;
- /* JF added rp>=ritem && I hope to god its right! */
- if (rp >= ritem && ISVAR (*rp))
+ if (ISVAR (*rp))
{
/* Downcasting from item_number to symbol_number. */
edge[nedges++] = map_goto (states1[--length],
{
state_number i;
int j, k;
- fputs ("Look-ahead tokens: BEGIN\n", out);
+ fprintf (out, "Look-ahead tokens: BEGIN\n");
for (i = 0; i < nstates; ++i)
{
reductions *reds = states[i]->reductions;
reds->rules[j]->number);
};
}
- fputs ("Look-ahead tokens: END\n", out);
+ fprintf (out, "Look-ahead tokens: END\n");
}
void