mirror of
https://git.savannah.gnu.org/git/bison.git
synced 2026-03-20 17:53:02 +00:00
* src/state.h, src/state.c (shifts_to): New.
* src/lalr.c (build_relations): Use it.
This commit is contained in:
@@ -1,3 +1,9 @@
|
|||||||
|
2002-06-30 Akim Demaille <akim@epita.fr>
|
||||||
|
|
||||||
|
* src/state.h, src/state.c (shifts_to): New.
|
||||||
|
* src/lalr.c (build_relations): Use it.
|
||||||
|
|
||||||
|
|
||||||
2002-06-30 Akim Demaille <akim@epita.fr>
|
2002-06-30 Akim Demaille <akim@epita.fr>
|
||||||
|
|
||||||
* src/gram.h (rule_number_t, RULE_NUMBER_MAX, int_of_rule_number)
|
* src/gram.h (rule_number_t, RULE_NUMBER_MAX, int_of_rule_number)
|
||||||
|
|||||||
12
src/lalr.c
12
src/lalr.c
@@ -420,16 +420,8 @@ build_relations (void)
|
|||||||
|
|
||||||
for (rp = rules[*rulep].rhs; *rp >= 0; rp++)
|
for (rp = rules[*rulep].rhs; *rp >= 0; rp++)
|
||||||
{
|
{
|
||||||
shifts_t *sp = state->shifts;
|
state = shifts_to (state->shifts,
|
||||||
int j;
|
item_number_as_symbol_number (*rp));
|
||||||
for (j = 0; j < sp->nshifts; j++)
|
|
||||||
{
|
|
||||||
state = states[sp->shifts[j]];
|
|
||||||
if (state->accessing_symbol
|
|
||||||
== item_number_as_symbol_number (*rp))
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
states1[length++] = state->number;
|
states1[length++] = state->number;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
14
src/state.c
14
src/state.c
@@ -49,6 +49,20 @@ shifts_new (int nshifts, state_number_t *shifts)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*-----------------------------------------------------------------.
|
||||||
|
| Return the state such these SHIFTS contain a shift/goto to it on |
|
||||||
|
| SYMBOL. Aborts if none found. |
|
||||||
|
`-----------------------------------------------------------------*/
|
||||||
|
|
||||||
|
state_t *
|
||||||
|
shifts_to (shifts_t *shifts, symbol_number_t s)
|
||||||
|
{
|
||||||
|
int j;
|
||||||
|
for (j = 0; j < shifts->nshifts; j++)
|
||||||
|
if (SHIFT_SYMBOL (shifts, j) == s)
|
||||||
|
return states[shifts->shifts[j]];
|
||||||
|
abort ();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/*--------------------.
|
/*--------------------.
|
||||||
|
|||||||
@@ -139,6 +139,10 @@ typedef struct shifts_s
|
|||||||
#define SHIFT_IS_DISABLED(Shifts, Shift) \
|
#define SHIFT_IS_DISABLED(Shifts, Shift) \
|
||||||
(Shifts->shifts[Shift] == 0)
|
(Shifts->shifts[Shift] == 0)
|
||||||
|
|
||||||
|
/* Return the state such these SHIFTS contain a shift/goto to it on
|
||||||
|
SYMBOL. Aborts if none found. */
|
||||||
|
struct state_s;
|
||||||
|
struct state_s *shifts_to PARAMS ((shifts_t *shifts, symbol_number_t s));
|
||||||
|
|
||||||
/*-------.
|
/*-------.
|
||||||
| Errs. |
|
| Errs. |
|
||||||
|
|||||||
Reference in New Issue
Block a user