mirror of
https://git.savannah.gnu.org/git/bison.git
synced 2026-03-23 19:23:02 +00:00
(state_number): Renamed from state_number_t.
(struct state): Renamed from struct state_s. (state): Renamed from state_t. (transitions): Renamed from transitions_t. Unused (and misspelled) transtion_s tag removed. (errs): Renamed from errs_t. Unused errs_s tag removed. (reductions): Renamed from reductions_t. Unused tag reductions_s removed. (STATE_NUMBER_MAXIMUM): Renamed from STATE_NUMBER_MAX. Include "gram.h".
This commit is contained in:
88
src/state.h
88
src/state.h
@@ -1,5 +1,7 @@
|
|||||||
/* Type definitions for nondeterministic finite state machine for bison,
|
/* Type definitions for nondeterministic finite state machine for bison,
|
||||||
Copyright 1984, 1989, 2000, 2001 Free Software Foundation, Inc.
|
|
||||||
|
Copyright (C) 1984, 1989, 2000, 2001, 2002 Free Software
|
||||||
|
Foundation, Inc.
|
||||||
|
|
||||||
This file is part of Bison, the GNU Compiler Compiler.
|
This file is part of Bison, the GNU Compiler Compiler.
|
||||||
|
|
||||||
@@ -51,7 +53,7 @@
|
|||||||
lookahead token alone). When the states are generated, these
|
lookahead token alone). When the states are generated, these
|
||||||
actions are represented in two other lists.
|
actions are represented in two other lists.
|
||||||
|
|
||||||
Each transition_t structure describes the possible transitions out
|
Each transition structure describes the possible transitions out
|
||||||
of one state, the state whose number is in the number field. Each
|
of one state, the state whose number is in the number field. Each
|
||||||
contains a vector of numbers of the states that transitions can go
|
contains a vector of numbers of the states that transitions can go
|
||||||
to. The accessing_symbol fields of those states' cores say what
|
to. The accessing_symbol fields of those states' cores say what
|
||||||
@@ -82,31 +84,34 @@
|
|||||||
#ifndef STATE_H_
|
#ifndef STATE_H_
|
||||||
# define STATE_H_
|
# define STATE_H_
|
||||||
|
|
||||||
# include "bitset.h"
|
# include <bitset.h>
|
||||||
|
|
||||||
|
# include "gram.h"
|
||||||
|
# include "symtab.h"
|
||||||
|
|
||||||
|
|
||||||
/*-------------------.
|
/*-------------------.
|
||||||
| Numbering states. |
|
| Numbering states. |
|
||||||
`-------------------*/
|
`-------------------*/
|
||||||
|
|
||||||
typedef short state_number_t;
|
typedef short state_number;
|
||||||
# define STATE_NUMBER_MAX ((state_number_t) SHRT_MAX)
|
# define STATE_NUMBER_MAXIMUM SHRT_MAX
|
||||||
|
|
||||||
/* Be ready to map a state_number_t to an int. */
|
/* Be ready to map a state_number to an int. */
|
||||||
# define state_number_as_int(Tok) ((int) (Tok))
|
# define state_number_as_int(Tok) ((int) (Tok))
|
||||||
|
|
||||||
|
|
||||||
typedef struct state_s state_t;
|
typedef struct state state;
|
||||||
|
|
||||||
/*--------------.
|
/*--------------.
|
||||||
| Transitions. |
|
| Transitions. |
|
||||||
`--------------*/
|
`--------------*/
|
||||||
|
|
||||||
typedef struct transtion_s
|
typedef struct
|
||||||
{
|
{
|
||||||
short num;
|
short num;
|
||||||
state_t *states[1];
|
state *states[1];
|
||||||
} transitions_t;
|
} transitions;
|
||||||
|
|
||||||
|
|
||||||
/* What is the symbol labelling the transition to
|
/* What is the symbol labelling the transition to
|
||||||
@@ -151,49 +156,48 @@ typedef struct transtion_s
|
|||||||
if (!TRANSITION_IS_DISABLED (Transitions, Iter))
|
if (!TRANSITION_IS_DISABLED (Transitions, Iter))
|
||||||
|
|
||||||
|
|
||||||
/* Return the state such these TRANSITIONS contain a shift/goto to it on
|
/* Return the state such SHIFTS contain a shift/goto to it on S.
|
||||||
SYMBOL. Aborts if none found. */
|
Abort if none found. */
|
||||||
struct state_s;
|
struct state *transitions_to (transitions *shifts, symbol_number s);
|
||||||
struct state_s *transitions_to (transitions_t *state, symbol_number_t s);
|
|
||||||
|
|
||||||
|
|
||||||
/*-------.
|
/*-------.
|
||||||
| Errs. |
|
| Errs. |
|
||||||
`-------*/
|
`-------*/
|
||||||
|
|
||||||
typedef struct errs_s
|
typedef struct
|
||||||
{
|
{
|
||||||
short num;
|
short num;
|
||||||
symbol_t *symbols[1];
|
symbol *symbols[1];
|
||||||
} errs_t;
|
} errs;
|
||||||
|
|
||||||
errs_t *errs_new (int num, symbol_t **tokens);
|
errs *errs_new (int num, symbol **tokens);
|
||||||
|
|
||||||
|
|
||||||
/*-------------.
|
/*-------------.
|
||||||
| Reductions. |
|
| Reductions. |
|
||||||
`-------------*/
|
`-------------*/
|
||||||
|
|
||||||
typedef struct reductions_s
|
typedef struct
|
||||||
{
|
{
|
||||||
short num;
|
short num;
|
||||||
bitset *lookaheads;
|
bitset *lookaheads;
|
||||||
rule_t *rules[1];
|
rule *rules[1];
|
||||||
} reductions_t;
|
} reductions;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/*---------.
|
/*---------.
|
||||||
| States. |
|
| states. |
|
||||||
`---------*/
|
`---------*/
|
||||||
|
|
||||||
struct state_s
|
struct state
|
||||||
{
|
{
|
||||||
state_number_t number;
|
state_number number;
|
||||||
symbol_number_t accessing_symbol;
|
symbol_number accessing_symbol;
|
||||||
transitions_t *transitions;
|
transitions *transitions;
|
||||||
reductions_t *reductions;
|
reductions *reductions;
|
||||||
errs_t *errs;
|
errs *errs;
|
||||||
|
|
||||||
/* Nonzero if no lookahead is needed to decide what to do in state S. */
|
/* Nonzero if no lookahead is needed to decide what to do in state S. */
|
||||||
char consistent;
|
char consistent;
|
||||||
@@ -205,30 +209,30 @@ struct state_s
|
|||||||
/* Its items. Must be last, since ITEMS can be arbitrarily large.
|
/* Its items. Must be last, since ITEMS can be arbitrarily large.
|
||||||
*/
|
*/
|
||||||
unsigned short nitems;
|
unsigned short nitems;
|
||||||
item_number_t items[1];
|
item_number items[1];
|
||||||
};
|
};
|
||||||
|
|
||||||
extern state_number_t nstates;
|
extern state_number nstates;
|
||||||
extern state_t *final_state;
|
extern state *final_state;
|
||||||
|
|
||||||
/* Create a new state with ACCESSING_SYMBOL for those items. */
|
/* Create a new state with ACCESSING_SYMBOL for those items. */
|
||||||
state_t *state_new (symbol_number_t accessing_symbol,
|
state *state_new (symbol_number accessing_symbol,
|
||||||
size_t core_size, item_number_t *core);
|
size_t core_size, item_number *core);
|
||||||
|
|
||||||
/* Set the transitions of STATE. */
|
/* Set the transitions of STATE. */
|
||||||
void state_transitions_set (state_t *state, int num, state_t **transitions);
|
void state_transitions_set (state *s, int num, state **trans);
|
||||||
|
|
||||||
/* Set the reductions of STATE. */
|
/* Set the reductions of STATE. */
|
||||||
void state_reductions_set (state_t *state, int num, rule_t **reductions);
|
void state_reductions_set (state *s, int num, rule **reds);
|
||||||
|
|
||||||
int state_reduction_find (state_t *state, rule_t *rule);
|
int state_reduction_find (state *s, rule *r);
|
||||||
|
|
||||||
/* Set the errs of STATE. */
|
/* Set the errs of STATE. */
|
||||||
void state_errs_set (state_t *state, int num, symbol_t **errs);
|
void state_errs_set (state *s, int num, symbol **errors);
|
||||||
|
|
||||||
/* Print on OUT all the lookaheads such that this STATE wants to
|
/* Print on OUT all the lookaheads such that this STATE wants to
|
||||||
reduce this RULE. */
|
reduce R. */
|
||||||
void state_rule_lookaheads_print (state_t *state, rule_t *rule, FILE *out);
|
void state_rule_lookaheads_print (state *s, rule *r, FILE *out);
|
||||||
|
|
||||||
/* Create/destroy the states hash table. */
|
/* Create/destroy the states hash table. */
|
||||||
void state_hash_new (void);
|
void state_hash_new (void);
|
||||||
@@ -236,13 +240,13 @@ void state_hash_free (void);
|
|||||||
|
|
||||||
/* Find the state associated to the CORE, and return it. If it does
|
/* Find the state associated to the CORE, and return it. If it does
|
||||||
not exist yet, return NULL. */
|
not exist yet, return NULL. */
|
||||||
state_t *state_hash_lookup (size_t core_size, item_number_t *core);
|
state *state_hash_lookup (size_t core_size, item_number *core);
|
||||||
|
|
||||||
/* Insert STATE in the state hash table. */
|
/* Insert STATE in the state hash table. */
|
||||||
void state_hash_insert (state_t *state);
|
void state_hash_insert (state *s);
|
||||||
|
|
||||||
/* All the states, indexed by the state number. */
|
/* All the states, indexed by the state number. */
|
||||||
extern state_t **states;
|
extern state **states;
|
||||||
|
|
||||||
/* Free all the states. */
|
/* Free all the states. */
|
||||||
void states_free (void);
|
void states_free (void);
|
||||||
|
|||||||
Reference in New Issue
Block a user