mirror of
https://git.savannah.gnu.org/git/bison.git
synced 2026-03-09 12:23:04 +00:00
style: comment changes and refactoring in state.c
* src/state.h, src/state.c: Comment changes. (transitions_to): Take a state* as argument. * src/lalr.h, src/lalr.c: Comment changes. (initialize_F): Use clear variable names.
This commit is contained in:
16
src/lalr.c
16
src/lalr.c
@@ -153,8 +153,8 @@ initialize_F (void)
|
|||||||
|
|
||||||
for (goto_number i = 0; i < ngotos; ++i)
|
for (goto_number i = 0; i < ngotos; ++i)
|
||||||
{
|
{
|
||||||
state_number stateno = to_state[i];
|
state_number dst = to_state[i];
|
||||||
const transitions *sp = states[stateno]->transitions;
|
const transitions *sp = states[dst]->transitions;
|
||||||
|
|
||||||
int j;
|
int j;
|
||||||
FOR_EACH_SHIFT (sp, j)
|
FOR_EACH_SHIFT (sp, j)
|
||||||
@@ -164,7 +164,7 @@ initialize_F (void)
|
|||||||
{
|
{
|
||||||
symbol_number sym = TRANSITION_SYMBOL (sp, j);
|
symbol_number sym = TRANSITION_SYMBOL (sp, j);
|
||||||
if (nullable[sym - ntokens])
|
if (nullable[sym - ntokens])
|
||||||
edge[nedges++] = map_goto (stateno, sym);
|
edge[nedges++] = map_goto (dst, sym);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (nedges == 0)
|
if (nedges == 0)
|
||||||
@@ -215,15 +215,15 @@ build_relations (void)
|
|||||||
|
|
||||||
for (rule **rulep = derives[symbol1 - ntokens]; *rulep; rulep++)
|
for (rule **rulep = derives[symbol1 - ntokens]; *rulep; rulep++)
|
||||||
{
|
{
|
||||||
int length = 1;
|
|
||||||
item_number const *rp;
|
|
||||||
state *s = states[from_state[i]];
|
state *s = states[from_state[i]];
|
||||||
states1[0] = s->number;
|
states1[0] = s->number;
|
||||||
|
|
||||||
for (rp = (*rulep)->rhs; ! item_number_is_rule_number (*rp); rp++)
|
int length = 1;
|
||||||
|
item_number const *rp;
|
||||||
|
for (rp = (*rulep)->rhs; 0 <= *rp; rp++)
|
||||||
{
|
{
|
||||||
s = transitions_to (s->transitions,
|
symbol_number sym = item_number_as_symbol_number (*rp);
|
||||||
item_number_as_symbol_number (*rp));
|
s = transitions_to (s, sym);
|
||||||
states1[length++] = s->number;
|
states1[length++] = s->number;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -83,8 +83,8 @@ typedef size_t goto_number;
|
|||||||
/** Index into #from_state and #to_state.
|
/** Index into #from_state and #to_state.
|
||||||
|
|
||||||
All the transitions that accept a particular variable are grouped
|
All the transitions that accept a particular variable are grouped
|
||||||
together and GOTO_MAP[I - NTOKENS] is the index in FROM_STATE and
|
together in FROM_STATE and TO_STATE, with indexes from GOTO_MAP[I -
|
||||||
TO_STATE of the first of them. */
|
NTOKENS] to GOTO_MAP[I - NTOKENS + 1] - 1 (including both). */
|
||||||
extern goto_number *goto_map;
|
extern goto_number *goto_map;
|
||||||
|
|
||||||
/** The size of #from_state and #to_state. */
|
/** The size of #from_state and #to_state. */
|
||||||
@@ -96,8 +96,8 @@ extern state_number *from_state;
|
|||||||
/** State number it leads to. */
|
/** State number it leads to. */
|
||||||
extern state_number *to_state;
|
extern state_number *to_state;
|
||||||
|
|
||||||
/** Map a state/symbol pair into its numeric representation. */
|
/** Find the goto number of the goto from S on non-terminal SYM. */
|
||||||
goto_number map_goto (state_number s0, symbol_number sym);
|
goto_number map_goto (state_number s, symbol_number sym);
|
||||||
|
|
||||||
/* goto_follows[i] is the set of tokens following goto i. */
|
/* goto_follows[i] is the set of tokens following goto i. */
|
||||||
extern bitsetv goto_follows;
|
extern bitsetv goto_follows;
|
||||||
|
|||||||
18
src/state.c
18
src/state.c
@@ -51,20 +51,14 @@ transitions_new (int num, state **dst)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/*-------------------------------------------------------.
|
|
||||||
| Return the state such that SHIFTS contain a shift/goto |
|
|
||||||
| to it on SYM. Abort if none found. |
|
|
||||||
`-------------------------------------------------------*/
|
|
||||||
|
|
||||||
state *
|
state *
|
||||||
transitions_to (transitions *shifts, symbol_number sym)
|
transitions_to (state *s, symbol_number sym)
|
||||||
{
|
{
|
||||||
for (int j = 0; ; j++)
|
transitions *trans = s->transitions;
|
||||||
{
|
for (int i = 0; i < trans->num; ++i)
|
||||||
aver (j < shifts->num);
|
if (TRANSITION_SYMBOL (trans, i) == sym)
|
||||||
if (TRANSITION_SYMBOL (shifts, j) == sym)
|
return trans->states[i];
|
||||||
return shifts->states[j];
|
abort ();
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -159,9 +159,9 @@ typedef struct
|
|||||||
if (!TRANSITION_IS_DISABLED (Transitions, Iter))
|
if (!TRANSITION_IS_DISABLED (Transitions, Iter))
|
||||||
|
|
||||||
|
|
||||||
/* Return the state such SHIFTS contain a shift/goto to it on SYM.
|
/* The destination of the transition (shift/goto) from state S on
|
||||||
Abort if none found. */
|
label SYM (term or nterm). Abort if none found. */
|
||||||
struct state *transitions_to (transitions *shifts, symbol_number sym);
|
struct state *transitions_to (state *s, symbol_number sym);
|
||||||
|
|
||||||
|
|
||||||
/*-------.
|
/*-------.
|
||||||
|
|||||||
Reference in New Issue
Block a user