#include "system.h"
#include "complain.h"
#include "getargs.h"
+#include "symtab.h"
#include "files.h"
#include "gram.h"
#include "state.h"
obstack_fgrow4 (&output_obstack,
_("\
Conflict in state %d between rule %d and token %s resolved as %s.\n"),
- state->number, LAruleno[LAno], tags[token], resolution);
+ state->number, LAruleno[LAno], symbols[token]->tag,
+ resolution);
}
{
int i;
/* find the rule to reduce by to get precedence of reduction */
- int redprec = rule_table[LAruleno[lookahead]].prec;
+ int redprec = rules[LAruleno[lookahead]].prec;
errs *errp = errs_new (ntokens + 1);
errp->nerrs = 0;
for (i = 0; i < ntokens; i++)
if (BITISSET (LA (lookahead), i)
&& BITISSET (lookaheadset, i)
- && sprec[i])
+ && symbols[i]->prec)
{
/* Shift-reduce conflict occurs for token number i
and it has a precedence.
The precedence of shifting is that of token i. */
- if (sprec[i] < redprec)
+ if (symbols[i]->prec < redprec)
{
log_resolution (state, lookahead, i, _("reduce"));
flush_shift (state, i);
}
- else if (sprec[i] > redprec)
+ else if (symbols[i]->prec > redprec)
{
log_resolution (state, lookahead, i, _("shift"));
flush_reduce (lookahead, i);
For right association, keep only the shift.
For nonassociation, keep neither. */
- switch (sassoc[i])
+ switch (symbols[i]->assoc)
{
case right_assoc:
log_resolution (state, lookahead, i, _("shift"));
check for shift-reduce conflict, and try to resolve using
precedence */
for (i = 0; i < state->nlookaheads; ++i)
- if (rule_table[LAruleno[state->lookaheadsp + i]].prec)
+ if (rules[LAruleno[state->lookaheadsp + i]].prec)
for (j = 0; j < tokensetsize; ++j)
if (LA (state->lookaheadsp + i)[j] & lookaheadset[j])
{
lookaheadset = XCALLOC (unsigned, tokensetsize);
for (i = 0; i < nstates; i++)
- set_conflicts (state_table[i]);
+ set_conflicts (states[i]);
}
if (conflicts[i])
{
fprintf (out, _("State %d contains "), i);
- fputs (conflict_report (count_sr_conflicts (state_table[i]),
- count_rr_conflicts (state_table[i])), out);
+ fputs (conflict_report (count_sr_conflicts (states[i]),
+ count_rr_conflicts (states[i])), out);
printed_sth = TRUE;
}
if (printed_sth)
for (i = 0; i < nstates; i++)
if (conflicts[i])
{
- src_total += count_sr_conflicts (state_table[i]);
- rrc_total += count_rr_conflicts (state_table[i]);
+ src_total += count_sr_conflicts (states[i]);
+ rrc_total += count_rr_conflicts (states[i]);
}
src_ok = src_total == (expected_conflicts == -1 ? 0 : expected_conflicts);