mirror of
https://git.savannah.gnu.org/git/bison.git
synced 2026-03-17 08:13:02 +00:00
style: reduce scopes in gram.c
* src/gram.c: here.
This commit is contained in:
62
src/gram.c
62
src/gram.c
@@ -84,8 +84,7 @@ size_t
|
|||||||
rule_rhs_length (rule const *r)
|
rule_rhs_length (rule const *r)
|
||||||
{
|
{
|
||||||
size_t res = 0;
|
size_t res = 0;
|
||||||
item_number *rhsp;
|
for (item_number *rhsp = r->rhs; *rhsp >= 0; ++rhsp)
|
||||||
for (rhsp = r->rhs; *rhsp >= 0; ++rhsp)
|
|
||||||
++res;
|
++res;
|
||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
@@ -94,11 +93,8 @@ void
|
|||||||
rule_rhs_print (rule const *r, FILE *out)
|
rule_rhs_print (rule const *r, FILE *out)
|
||||||
{
|
{
|
||||||
if (0 <= *r->rhs)
|
if (0 <= *r->rhs)
|
||||||
{
|
for (item_number *rp = r->rhs; *rp >= 0; rp++)
|
||||||
item_number *rp;
|
fprintf (out, " %s", symbols[*rp]->tag);
|
||||||
for (rp = r->rhs; *rp >= 0; rp++)
|
|
||||||
fprintf (out, " %s", symbols[*rp]->tag);
|
|
||||||
}
|
|
||||||
else
|
else
|
||||||
fputs (" %empty", out);
|
fputs (" %empty", out);
|
||||||
}
|
}
|
||||||
@@ -108,9 +104,8 @@ rule_rhs_print_xml (rule const *r, FILE *out, int level)
|
|||||||
{
|
{
|
||||||
if (*r->rhs >= 0)
|
if (*r->rhs >= 0)
|
||||||
{
|
{
|
||||||
item_number *rp;
|
|
||||||
xml_puts (out, level, "<rhs>");
|
xml_puts (out, level, "<rhs>");
|
||||||
for (rp = r->rhs; *rp >= 0; rp++)
|
for (item_number *rp = r->rhs; *rp >= 0; rp++)
|
||||||
xml_printf (out, level + 1, "<symbol>%s</symbol>",
|
xml_printf (out, level + 1, "<symbol>%s</symbol>",
|
||||||
xml_escape (symbols[*rp]->tag));
|
xml_escape (symbols[*rp]->tag));
|
||||||
xml_puts (out, level, "</rhs>");
|
xml_puts (out, level, "</rhs>");
|
||||||
@@ -126,9 +121,8 @@ rule_rhs_print_xml (rule const *r, FILE *out, int level)
|
|||||||
void
|
void
|
||||||
ritem_print (FILE *out)
|
ritem_print (FILE *out)
|
||||||
{
|
{
|
||||||
unsigned i;
|
|
||||||
fputs ("RITEM\n", out);
|
fputs ("RITEM\n", out);
|
||||||
for (i = 0; i < nritems; ++i)
|
for (unsigned i = 0; i < nritems; ++i)
|
||||||
if (ritem[i] >= 0)
|
if (ritem[i] >= 0)
|
||||||
fprintf (out, " %s", symbols[ritem[i]]->tag);
|
fprintf (out, " %s", symbols[ritem[i]]->tag);
|
||||||
else
|
else
|
||||||
@@ -140,9 +134,7 @@ size_t
|
|||||||
ritem_longest_rhs (void)
|
ritem_longest_rhs (void)
|
||||||
{
|
{
|
||||||
int max = 0;
|
int max = 0;
|
||||||
rule_number r;
|
for (rule_number r = 0; r < nrules; ++r)
|
||||||
|
|
||||||
for (r = 0; r < nrules; ++r)
|
|
||||||
{
|
{
|
||||||
int length = rule_rhs_length (&rules[r]);
|
int length = rule_rhs_length (&rules[r]);
|
||||||
if (length > max)
|
if (length > max)
|
||||||
@@ -156,12 +148,11 @@ void
|
|||||||
grammar_rules_partial_print (FILE *out, const char *title,
|
grammar_rules_partial_print (FILE *out, const char *title,
|
||||||
rule_filter filter)
|
rule_filter filter)
|
||||||
{
|
{
|
||||||
rule_number r;
|
|
||||||
bool first = true;
|
bool first = true;
|
||||||
sym_content *previous_lhs = NULL;
|
sym_content *previous_lhs = NULL;
|
||||||
|
|
||||||
/* rule # : LHS -> RHS */
|
/* rule # : LHS -> RHS */
|
||||||
for (r = 0; r < nrules + nuseless_productions; r++)
|
for (rule_number r = 0; r < nrules + nuseless_productions; r++)
|
||||||
{
|
{
|
||||||
if (filter && !filter (&rules[r]))
|
if (filter && !filter (&rules[r]))
|
||||||
continue;
|
continue;
|
||||||
@@ -188,10 +179,9 @@ grammar_rules_print (FILE *out)
|
|||||||
void
|
void
|
||||||
grammar_rules_print_xml (FILE *out, int level)
|
grammar_rules_print_xml (FILE *out, int level)
|
||||||
{
|
{
|
||||||
rule_number r;
|
|
||||||
bool first = true;
|
bool first = true;
|
||||||
|
|
||||||
for (r = 0; r < nrules + nuseless_productions; r++)
|
for (rule_number r = 0; r < nrules + nuseless_productions; r++)
|
||||||
{
|
{
|
||||||
if (first)
|
if (first)
|
||||||
xml_puts (out, level + 1, "<rules>");
|
xml_puts (out, level + 1, "<rules>");
|
||||||
@@ -233,10 +223,9 @@ grammar_dump (FILE *out, const char *title)
|
|||||||
|
|
||||||
fprintf (out, "Variables\n---------\n\n");
|
fprintf (out, "Variables\n---------\n\n");
|
||||||
{
|
{
|
||||||
symbol_number i;
|
|
||||||
fprintf (out, "Value Sprec Sassoc Tag\n");
|
fprintf (out, "Value Sprec Sassoc Tag\n");
|
||||||
|
|
||||||
for (i = ntokens; i < nsyms; i++)
|
for (symbol_number i = ntokens; i < nsyms; i++)
|
||||||
fprintf (out, "%5d %5d %5d %s\n",
|
fprintf (out, "%5d %5d %5d %s\n",
|
||||||
i,
|
i,
|
||||||
symbols[i]->content->prec, symbols[i]->content->assoc,
|
symbols[i]->content->prec, symbols[i]->content->assoc,
|
||||||
@@ -246,18 +235,16 @@ grammar_dump (FILE *out, const char *title)
|
|||||||
|
|
||||||
fprintf (out, "Rules\n-----\n\n");
|
fprintf (out, "Rules\n-----\n\n");
|
||||||
{
|
{
|
||||||
rule_number i;
|
|
||||||
fprintf (out,
|
fprintf (out,
|
||||||
"Num (Prec, Assoc, Useful, Ritem Range) Lhs"
|
"Num (Prec, Assoc, Useful, Ritem Range) Lhs"
|
||||||
" -> Rhs (Ritem range) [Num]\n");
|
" -> Rhs (Ritem range) [Num]\n");
|
||||||
for (i = 0; i < nrules + nuseless_productions; i++)
|
for (rule_number i = 0; i < nrules + nuseless_productions; i++)
|
||||||
{
|
{
|
||||||
rule const *rule_i = &rules[i];
|
rule const *rule_i = &rules[i];
|
||||||
item_number *rp = NULL;
|
unsigned const rhs_itemno = rule_i->rhs - ritem;
|
||||||
unsigned rhs_itemno = rule_i->rhs - ritem;
|
|
||||||
unsigned rhs_count = 0;
|
|
||||||
/* Find the last RHS index in ritems. */
|
/* Find the last RHS index in ritems. */
|
||||||
for (rp = rule_i->rhs; *rp >= 0; ++rp)
|
unsigned rhs_count = 0;
|
||||||
|
for (item_number *rp = rule_i->rhs; *rp >= 0; ++rp)
|
||||||
++rhs_count;
|
++rhs_count;
|
||||||
fprintf (out, "%3d (%2d, %2d, %2d, %2u-%2u) %2d ->",
|
fprintf (out, "%3d (%2d, %2d, %2d, %2u-%2u) %2d ->",
|
||||||
i,
|
i,
|
||||||
@@ -268,31 +255,28 @@ grammar_dump (FILE *out, const char *title)
|
|||||||
rhs_itemno + rhs_count - 1,
|
rhs_itemno + rhs_count - 1,
|
||||||
rule_i->lhs->number);
|
rule_i->lhs->number);
|
||||||
/* Dumped the RHS. */
|
/* Dumped the RHS. */
|
||||||
for (rp = rule_i->rhs; *rp >= 0; rp++)
|
for (item_number *rp = rule_i->rhs; *rp >= 0; ++rp)
|
||||||
fprintf (out, " %3d", *rp);
|
fprintf (out, " %3d", *rp);
|
||||||
fprintf (out, " [%d]\n", item_number_as_rule_number (*rp));
|
fprintf (out, " [%d]\n",
|
||||||
|
item_number_as_rule_number (rule_i->rhs[rhs_count+1]));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
fprintf (out, "\n\n");
|
fprintf (out, "\n\n");
|
||||||
|
|
||||||
fprintf (out, "Rules interpreted\n-----------------\n\n");
|
fprintf (out, "Rules interpreted\n-----------------\n\n");
|
||||||
{
|
for (rule_number r = 0; r < nrules + nuseless_productions; r++)
|
||||||
rule_number r;
|
{
|
||||||
for (r = 0; r < nrules + nuseless_productions; r++)
|
fprintf (out, "%-5d %s:", r, rules[r].lhs->symbol->tag);
|
||||||
{
|
rule_rhs_print (&rules[r], out);
|
||||||
fprintf (out, "%-5d %s:", r, rules[r].lhs->symbol->tag);
|
fprintf (out, "\n");
|
||||||
rule_rhs_print (&rules[r], out);
|
}
|
||||||
fprintf (out, "\n");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
fprintf (out, "\n\n");
|
fprintf (out, "\n\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
grammar_rules_useless_report (const char *message)
|
grammar_rules_useless_report (const char *message)
|
||||||
{
|
{
|
||||||
rule_number r;
|
for (rule_number r = 0; r < nrules ; ++r)
|
||||||
for (r = 0; r < nrules ; ++r)
|
|
||||||
/* Don't complain about rules whose LHS is useless, we already
|
/* Don't complain about rules whose LHS is useless, we already
|
||||||
complained about it. */
|
complained about it. */
|
||||||
if (!reduce_nonterminal_useless_in_grammar (rules[r].lhs)
|
if (!reduce_nonterminal_useless_in_grammar (rules[r].lhs)
|
||||||
|
|||||||
Reference in New Issue
Block a user