+extern state_number_t nstates;
+extern state_t *final_state;
+
+/* Create a new state with ACCESSING_SYMBOL for those items. */
+state_t *state_new PARAMS ((symbol_number_t accessing_symbol,
+ size_t core_size, item_number_t *core));
+
+/* Set the transitions of STATE. */
+void state_transitions_set PARAMS ((state_t *state,
+ int num, state_number_t *transitions));
+
+/* Set the reductions of STATE. */
+void state_reductions_set PARAMS ((state_t *state,
+ int num, rule_number_t *reductions));
+
+/* Set the errs of STATE. */
+void state_errs_set PARAMS ((state_t *state,
+ int num, symbol_number_t *errs));
+
+/* Print on OUT all the lookaheads such that this STATE wants to
+ reduce this RULE. */
+void state_rule_lookaheads_print PARAMS ((state_t *state, rule_t *rule,
+ FILE *out));
+
+/* Create/destroy the states hash table. */
+void state_hash_new PARAMS ((void));
+void state_hash_free PARAMS ((void));
+
+/* Find the state associated to the CORE, and return it. If it does
+ not exist yet, return NULL. */
+state_t *state_hash_lookup PARAMS ((size_t core_size, item_number_t *core));
+
+/* Insert STATE in the state hash table. */
+void state_hash_insert PARAMS ((state_t *state));
+
+/* All the states, indexed by the state number. */
+extern state_t **states;