-/* Type definitions for nondeterministic finite state machine for Bison.
+/* Type definitions for the finite state machine for Bison.
- Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2009 Free
- Software Foundation, Inc.
+ Copyright (C) 2001-2007, 2009-2012 Free Software Foundation, Inc.
This file is part of Bison, the GNU Compiler Compiler.
#include "print-xml.h"
- /*-------------------.
- | Shifts and Gotos. |
- `-------------------*/
+ /*-------------------.
+ | Shifts and Gotos. |
+ `-------------------*/
/*-----------------------------------------.
{
aver (j < shifts->num);
if (TRANSITION_SYMBOL (shifts, j) == sym)
- return shifts->states[j];
+ return shifts->states[j];
}
}
- /*--------------------.
- | Error transitions. |
- `--------------------*/
+ /*--------------------.
+ | Error transitions. |
+ `--------------------*/
/*---------------------------------.
- /*-------------.
- | Reductions. |
- `-------------*/
+ /*-------------.
+ | Reductions. |
+ `-------------*/
/*---------------------------------------.
- /*---------.
- | States. |
- `---------*/
+ /*---------.
+ | States. |
+ `---------*/
state_number nstates = 0;
state *
state_new (symbol_number accessing_symbol,
- size_t nitems, item_number *core)
+ size_t nitems, item_number *core)
{
state *res;
size_t items_size = nitems * sizeof *core;
char const *sep = "";
fprintf (out, " [");
BITSET_FOR_EACH (biter, reds->lookahead_tokens[red], k, 0)
- {
- fprintf (out, "%s%s", sep, symbols[k]->tag);
- sep = ", ";
- }
+ {
+ fprintf (out, "%s%s", sep, symbols[k]->tag);
+ sep = ", ";
+ }
fprintf (out, "]");
}
}
void
state_rule_lookahead_tokens_print_xml (state *s, rule *r,
- FILE *out, int level)
+ FILE *out, int level)
{
/* Find the reduction we are handling. */
reductions *reds = s->reductions;
int k;
xml_puts (out, level, "<lookaheads>");
BITSET_FOR_EACH (biter, reds->lookahead_tokens[red], k, 0)
- {
- xml_printf (out, level + 1, "<symbol>%s</symbol>",
- xml_escape (symbols[k]->tag));
- }
+ {
+ xml_printf (out, level + 1, "<symbol>%s</symbol>",
+ xml_escape (symbols[k]->tag));
+ }
xml_puts (out, level, "</lookaheads>");
}
}
state_hash_new (void)
{
state_table = hash_initialize (HT_INITIAL_CAPACITY,
- NULL,
- state_hasher,
- state_comparator,
- NULL);
+ NULL,
+ state_hasher,
+ state_comparator,
+ NULL);
}
void
state_hash_insert (state *s)
{
- hash_insert (state_table, s);
+ if (!hash_insert (state_table, s))
+ xalloc_die ();
}