+};
+
+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_t **transitions));
+
+/* Set the reductions of STATE. */
+void state_reductions_set PARAMS ((state_t *state,
+ int num, rule_t **reductions));
+
+int state_reduction_find PARAMS ((state_t *state, rule_t *rule));
+
+/* Set the errs of STATE. */
+void state_errs_set PARAMS ((state_t *state,
+ int num, symbol_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));