mirror of
https://git.savannah.gnu.org/git/bison.git
synced 2026-03-18 16:53:02 +00:00
tables: scope reduction
* src/tables.c (default_goto): Make it easier to understand.
This commit is contained in:
49
src/tables.c
49
src/tables.c
@@ -395,7 +395,7 @@ save_row (state_number s)
|
|||||||
base_number *sp1 = froms[s] = xnmalloc (count, sizeof *sp1);
|
base_number *sp1 = froms[s] = xnmalloc (count, sizeof *sp1);
|
||||||
base_number *sp2 = tos[s] = xnmalloc (count, sizeof *sp2);
|
base_number *sp2 = tos[s] = xnmalloc (count, sizeof *sp2);
|
||||||
unsigned int *sp3 = conflict_tos[s] =
|
unsigned int *sp3 = conflict_tos[s] =
|
||||||
nondeterministic_parser ? xnmalloc (count, sizeof *sp3) : NULL;;
|
nondeterministic_parser ? xnmalloc (count, sizeof *sp3) : NULL;
|
||||||
|
|
||||||
/* Store non defaulted actions. */
|
/* Store non defaulted actions. */
|
||||||
for (i = 0; i < ntokens; i++)
|
for (i = 0; i < ntokens; i++)
|
||||||
@@ -513,37 +513,38 @@ save_column (symbol_number sym, state_number default_state)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/*-------------------------------------------------------------.
|
/*----------------------------------------------------------------.
|
||||||
| Return `the' most common destination GOTO on SYM (a nterm). |
|
| The default state for SYM: the state which is 'the' most common |
|
||||||
`-------------------------------------------------------------*/
|
| GOTO destination on SYM (an nterm). |
|
||||||
|
`----------------------------------------------------------------*/
|
||||||
|
|
||||||
static state_number
|
static state_number
|
||||||
default_goto (symbol_number sym, size_t state_count[])
|
default_goto (symbol_number sym, size_t state_count[])
|
||||||
{
|
{
|
||||||
state_number s;
|
goto_number begin = goto_map[sym - ntokens];
|
||||||
goto_number i;
|
goto_number end = goto_map[sym - ntokens + 1];
|
||||||
goto_number m = goto_map[sym - ntokens];
|
state_number res = -1;
|
||||||
goto_number n = goto_map[sym - ntokens + 1];
|
|
||||||
state_number default_state = -1;
|
|
||||||
size_t max = 0;
|
|
||||||
|
|
||||||
if (m == n)
|
if (begin != end)
|
||||||
return -1;
|
{
|
||||||
|
size_t max = 0;
|
||||||
|
goto_number i;
|
||||||
|
state_number s;
|
||||||
|
|
||||||
for (s = 0; s < nstates; s++)
|
for (s = 0; s < nstates; s++)
|
||||||
state_count[s] = 0;
|
state_count[s] = 0;
|
||||||
|
|
||||||
for (i = m; i < n; i++)
|
for (i = begin; i < end; i++)
|
||||||
state_count[to_state[i]]++;
|
state_count[to_state[i]]++;
|
||||||
|
|
||||||
for (s = 0; s < nstates; s++)
|
for (s = 0; s < nstates; s++)
|
||||||
if (state_count[s] > max)
|
if (max < state_count[s])
|
||||||
{
|
{
|
||||||
max = state_count[s];
|
max = state_count[s];
|
||||||
default_state = s;
|
res = s;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
return default_state;
|
return res;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user