mirror of
https://git.savannah.gnu.org/git/bison.git
synced 2026-03-18 00:33:03 +00:00
* lib/timevar.c (get_time): Include children time.
* src/lalr.h (LA, LArule): Don't export them: used with the state_t. * src/lalr.c (LA, LArule): Static. * src/lalr.h, src/lalr.c (lalr_free): New. * src/main.c (main): Call it. * src/tables.c (pack_vector): Check whether loc is >= to the table_size, not >. (pack_tables): Don't free froms, tos, conflict_tos, and pos... (tables_generate): do it, since that's also it which allocates them. Don't free LA and LArule, main does.
This commit is contained in:
32
src/lalr.c
32
src/lalr.c
@@ -52,8 +52,22 @@ typedef struct goto_list_s
|
||||
} goto_list_t;
|
||||
|
||||
|
||||
rule_t **LArule = NULL;
|
||||
bitsetv LA = NULL;
|
||||
/* LARULE is a vector which records the rules that need lookahead in
|
||||
various states. The elements of LARULE that apply to state S are
|
||||
those from LOOKAHEADS[S] through LOOKAHEADS[S+1]-1.
|
||||
|
||||
If LR is the length of LArule, then a number from 0 to LR-1 can
|
||||
specify both a rule and a state where the rule might be applied.
|
||||
*/
|
||||
|
||||
static rule_t **LArule = NULL;
|
||||
|
||||
/* LA is a LR by NTOKENS matrix of bits. LA[l, i] is 1 if the rule
|
||||
LArule[l] is applicable in the appropriate state when the next
|
||||
token is symbol i. If LA[l, i] and LA[l, j] are both 1 for i != j,
|
||||
it is a conflict. */
|
||||
|
||||
static bitsetv LA = NULL;
|
||||
size_t nLA;
|
||||
|
||||
|
||||
@@ -460,3 +474,17 @@ lalr (void)
|
||||
if (trace_flag & trace_sets)
|
||||
lookaheads_print (stderr);
|
||||
}
|
||||
|
||||
|
||||
void
|
||||
lalr_free (void)
|
||||
{
|
||||
state_number_t s;
|
||||
for (s = 0; s < nstates; ++s)
|
||||
{
|
||||
states[s]->lookaheads = NULL;
|
||||
states[s]->lookaheads_rule = NULL;
|
||||
}
|
||||
bitsetv_free (LA);
|
||||
free (LArule);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user