mirror of
https://git.savannah.gnu.org/git/bison.git
synced 2026-03-09 12:23:04 +00:00
style: reduce scopes
* src/conflicts.c, src/reader.c: Minor style changes.
This commit is contained in:
committed by
Akim Demaille
parent
b34b12c4f9
commit
2b2556b41c
@@ -506,26 +506,25 @@ count_rr_conflicts (bool one_per_token)
|
|||||||
|
|
||||||
/*----------------------------------------------------------------------.
|
/*----------------------------------------------------------------------.
|
||||||
| For a given rule, count the number of states for which it is involved |
|
| For a given rule, count the number of states for which it is involved |
|
||||||
| in shift/reduce conflicts. |
|
| in shift/reduce conflicts. |
|
||||||
`----------------------------------------------------------------------*/
|
`----------------------------------------------------------------------*/
|
||||||
|
|
||||||
static bool
|
static bool
|
||||||
rule_has_state_sr_conflicts (rule *r, state *s)
|
rule_has_state_sr_conflicts (rule *r, state *s)
|
||||||
{
|
{
|
||||||
int i;
|
|
||||||
int j;
|
|
||||||
transitions *trans = s->transitions;
|
transitions *trans = s->transitions;
|
||||||
reductions *reds = s->reductions;
|
reductions *reds = s->reductions;
|
||||||
|
|
||||||
for (i = 0; i < reds->num; i++)
|
for (int i = 0; i < reds->num; ++i)
|
||||||
if (reds->rules[i] == r)
|
if (reds->rules[i] == r)
|
||||||
break;
|
{
|
||||||
if (i >= reds->num)
|
bitset lookaheads = reds->lookahead_tokens[i];
|
||||||
return false;
|
int j;
|
||||||
|
FOR_EACH_SHIFT (trans, j)
|
||||||
FOR_EACH_SHIFT (trans, j)
|
if (bitset_test (lookaheads, TRANSITION_SYMBOL (trans, j)))
|
||||||
if (bitset_test (reds->lookahead_tokens[i], TRANSITION_SYMBOL (trans, j)))
|
return true;
|
||||||
return true;
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@@ -533,11 +532,8 @@ rule_has_state_sr_conflicts (rule *r, state *s)
|
|||||||
static size_t
|
static size_t
|
||||||
count_rule_sr_conflicts (rule *r)
|
count_rule_sr_conflicts (rule *r)
|
||||||
{
|
{
|
||||||
state_number i;
|
size_t res = 0;
|
||||||
size_t res;
|
for (state_number i = 0; i < nstates; ++i)
|
||||||
|
|
||||||
res = 0;
|
|
||||||
for (i = 0; i < nstates; i++)
|
|
||||||
if (conflicts[i] && rule_has_state_sr_conflicts (r, states[i]))
|
if (conflicts[i] && rule_has_state_sr_conflicts (r, states[i]))
|
||||||
res++;
|
res++;
|
||||||
return res;
|
return res;
|
||||||
@@ -551,22 +547,18 @@ count_rule_sr_conflicts (rule *r)
|
|||||||
static bool
|
static bool
|
||||||
rule_has_state_rr_conflicts (rule *r, state *s)
|
rule_has_state_rr_conflicts (rule *r, state *s)
|
||||||
{
|
{
|
||||||
int i;
|
|
||||||
reductions *reds = s->reductions;
|
reductions *reds = s->reductions;
|
||||||
size_t res;
|
|
||||||
bitset lookaheads;
|
|
||||||
|
|
||||||
for (i = 0; i < reds->num; i++)
|
|
||||||
if (reds->rules[i] == r)
|
|
||||||
break;
|
|
||||||
if (i >= reds->num)
|
|
||||||
return 0;
|
|
||||||
lookaheads = reds->lookahead_tokens[i];
|
|
||||||
|
|
||||||
for (i = 0; i < reds->num; i++)
|
for (int i = 0; i < reds->num; ++i)
|
||||||
if (reds->rules[i] != r &&
|
if (reds->rules[i] == r)
|
||||||
!bitset_disjoint_p (lookaheads, reds->lookahead_tokens[i]))
|
{
|
||||||
return true;
|
bitset lookaheads = reds->lookahead_tokens[i];
|
||||||
|
for (int j = 0; j < reds->num; ++j)
|
||||||
|
if (reds->rules[j] != r &&
|
||||||
|
!bitset_disjoint_p (lookaheads, reds->lookahead_tokens[j]))
|
||||||
|
return true;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@@ -574,13 +566,10 @@ rule_has_state_rr_conflicts (rule *r, state *s)
|
|||||||
static size_t
|
static size_t
|
||||||
count_rule_rr_conflicts (rule *r)
|
count_rule_rr_conflicts (rule *r)
|
||||||
{
|
{
|
||||||
state_number i;
|
size_t res = 0;
|
||||||
size_t res;
|
for (state_number i = 0; i < nstates; ++i)
|
||||||
|
|
||||||
res = 0;
|
|
||||||
for (i = 0; i < nstates; i++)
|
|
||||||
if (conflicts[i] && rule_has_state_rr_conflicts (r, states[i]))
|
if (conflicts[i] && rule_has_state_rr_conflicts (r, states[i]))
|
||||||
res++;
|
res++;
|
||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -635,25 +624,25 @@ conflicts_total_count (void)
|
|||||||
static void
|
static void
|
||||||
rule_conflicts_print (void)
|
rule_conflicts_print (void)
|
||||||
{
|
{
|
||||||
rule_number i;
|
for (rule_number i = 0; i < nrules; i += 1)
|
||||||
|
|
||||||
for (i = 0; i < nrules; i += 1)
|
|
||||||
{
|
{
|
||||||
rule *r = &rules[i];
|
rule *r = &rules[i];
|
||||||
int expected_sr = r->expected_sr_conflicts;
|
int expected_sr = r->expected_sr_conflicts;
|
||||||
int expected_rr = r->expected_rr_conflicts;
|
int expected_rr = r->expected_rr_conflicts;
|
||||||
|
|
||||||
if (expected_sr != -1 || expected_rr != -1)
|
if (expected_sr != -1 || expected_rr != -1)
|
||||||
{
|
{
|
||||||
int sr = count_rule_sr_conflicts (r);
|
int sr = count_rule_sr_conflicts (r);
|
||||||
int rr = count_rule_rr_conflicts (r);
|
|
||||||
if (sr != expected_sr && (sr != 0 || expected_sr != -1))
|
if (sr != expected_sr && (sr != 0 || expected_sr != -1))
|
||||||
complain (&r->location, complaint, _("\
|
complain (&r->location, complaint,
|
||||||
shift/reduce conflicts for rule %d: %d found, %d expected"),
|
_("shift/reduce conflicts for rule %d:"
|
||||||
|
" %d found, %d expected"),
|
||||||
r->user_number, sr, expected_sr);
|
r->user_number, sr, expected_sr);
|
||||||
|
int rr = count_rule_rr_conflicts (r);
|
||||||
if (rr != expected_rr && (rr != 0 || expected_rr != -1))
|
if (rr != expected_rr && (rr != 0 || expected_rr != -1))
|
||||||
complain (&r->location, complaint, _("\
|
complain (&r->location, complaint,
|
||||||
reduce/reduce conflicts for rule %d: %d found, %d expected"),
|
_("reduce/reduce conflicts for rule %d:"
|
||||||
|
" %d found, %d expected"),
|
||||||
r->user_number, rr, expected_rr);
|
r->user_number, rr, expected_rr);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
14
src/reader.c
14
src/reader.c
@@ -114,13 +114,11 @@ record_merge_function_type (int merger, uniqstr type, location declaration_loc)
|
|||||||
if (merger <= 0)
|
if (merger <= 0)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
int merger_find;
|
|
||||||
merger_list *merge_function;
|
|
||||||
|
|
||||||
if (type == NULL)
|
if (type == NULL)
|
||||||
type = uniqstr_new ("");
|
type = uniqstr_new ("");
|
||||||
|
|
||||||
merger_find = 1;
|
merger_list *merge_function;
|
||||||
|
int merger_find = 1;
|
||||||
for (merge_function = merge_functions;
|
for (merge_function = merge_functions;
|
||||||
merge_function != NULL && merger_find != merger;
|
merge_function != NULL && merger_find != merger;
|
||||||
merge_function = merge_function->next)
|
merge_function = merge_function->next)
|
||||||
@@ -585,6 +583,7 @@ grammar_current_rule_predicate_append (const char *pred, location loc)
|
|||||||
void
|
void
|
||||||
grammar_current_rule_expect_sr (int count, location loc)
|
grammar_current_rule_expect_sr (int count, location loc)
|
||||||
{
|
{
|
||||||
|
(void) loc;
|
||||||
current_rule->expected_sr_conflicts = count;
|
current_rule->expected_sr_conflicts = count;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -608,13 +607,11 @@ static void
|
|||||||
packgram (void)
|
packgram (void)
|
||||||
{
|
{
|
||||||
unsigned itemno = 0;
|
unsigned itemno = 0;
|
||||||
rule_number ruleno = 0;
|
|
||||||
|
|
||||||
ritem = xnmalloc (nritems + 1, sizeof *ritem);
|
ritem = xnmalloc (nritems + 1, sizeof *ritem);
|
||||||
|
|
||||||
/* This sentinel is used by build_relations in gram.c. */
|
/* This sentinel is used by build_relations in gram.c. */
|
||||||
*ritem++ = 0;
|
*ritem++ = 0;
|
||||||
|
|
||||||
|
rule_number ruleno = 0;
|
||||||
rules = xnmalloc (nrules, sizeof *rules);
|
rules = xnmalloc (nrules, sizeof *rules);
|
||||||
|
|
||||||
for (symbol_list *p = grammar; p; p = p->next)
|
for (symbol_list *p = grammar; p; p = p->next)
|
||||||
@@ -747,11 +744,10 @@ prepare_percent_define_front_end_variables (void)
|
|||||||
/* Set %define front-end variable defaults. */
|
/* Set %define front-end variable defaults. */
|
||||||
muscle_percent_define_default ("lr.keep-unreachable-state", "false");
|
muscle_percent_define_default ("lr.keep-unreachable-state", "false");
|
||||||
{
|
{
|
||||||
char *lr_type;
|
|
||||||
/* IELR would be a better default, but LALR is historically the
|
/* IELR would be a better default, but LALR is historically the
|
||||||
default. */
|
default. */
|
||||||
muscle_percent_define_default ("lr.type", "lalr");
|
muscle_percent_define_default ("lr.type", "lalr");
|
||||||
lr_type = muscle_percent_define_get ("lr.type");
|
char *lr_type = muscle_percent_define_get ("lr.type");
|
||||||
if (STRNEQ (lr_type, "canonical-lr"))
|
if (STRNEQ (lr_type, "canonical-lr"))
|
||||||
muscle_percent_define_default ("lr.default-reduction", "most");
|
muscle_percent_define_default ("lr.default-reduction", "most");
|
||||||
else
|
else
|
||||||
|
|||||||
Reference in New Issue
Block a user