/* Print an xml on generated parser, for Bison,
- Copyright (C) 2007, 2009-2012 Free Software Foundation, Inc.
+ Copyright (C) 2007, 2009-2015 Free Software Foundation, Inc.
This file is part of Bison, the GNU Compiler Compiler.
char *ptr;
size_t size;
};
-static struct escape_buf escape_bufs[3];
+enum { num_escape_bufs = 3 };
+static struct escape_buf escape_bufs[num_escape_bufs];
/*--------------------------------.
sitems = itemset;
snritems = nitemset;
- if (!snritems) {
- xml_puts (out, level, "<itemset/>");
- return;
- }
+ if (!snritems)
+ {
+ xml_puts (out, level, "<itemset/>");
+ return;
+ }
xml_puts (out, level, "<itemset>");
for (i = 0; i < snritems; i++)
{
bool printed = false;
- item_number *sp;
- item_number *sp1;
- rule_number r;
-
- sp1 = sp = ritem + sitems[i];
+ item_number *sp1 = ritem + sitems[i];
+ item_number *sp = sp1;
+ rule *r;
- while (*sp >= 0)
+ while (0 <= *sp)
sp++;
- r = item_number_as_rule_number (*sp);
- sp = rules[r].rhs;
+ r = &rules[item_number_as_rule_number (*sp)];
+ sp = r->rhs;
/* Display the lookahead tokens? */
if (item_number_is_rule_number (*sp1))
{
reductions *reds = s->reductions;
- int red = state_reduction_find (s, &rules[r]);
+ int red = state_reduction_find (s, r);
/* Print item with lookaheads if there are. */
if (reds->lookahead_tokens && red != -1)
{
xml_printf (out, level + 1,
"<item rule-number=\"%d\" point=\"%d\">",
- rules[r].number, sp1 - sp);
- state_rule_lookahead_tokens_print_xml (s, &rules[r],
+ r->number, sp1 - sp);
+ state_rule_lookahead_tokens_print_xml (s, r,
out, level + 2);
xml_puts (out, level + 1, "</item>");
printed = true;
}
if (!printed)
- {
- xml_printf (out, level + 1,
- "<item rule-number=\"%d\" point=\"%d\"/>",
- rules[r].number,
- sp1 - sp);
- }
+ xml_printf (out, level + 1,
+ "<item rule-number=\"%d\" point=\"%d\"/>",
+ r->number,
+ sp1 - sp);
}
xml_puts (out, level, "</itemset>");
}
}
/* Nothing to report. */
- if (!n) {
- xml_puts (out, level, "<transitions/>");
- return;
- }
+ if (!n)
+ {
+ xml_puts (out, level, "<transitions/>");
+ return;
+ }
/* Report lookahead tokens and shifts. */
xml_puts (out, level, "<transitions>");
count = true;
/* Nothing to report. */
- if (!count) {
- xml_puts (out, level, "<errors/>");
- return;
- }
+ if (!count)
+ {
+ xml_puts (out, level, "<errors/>");
+ return;
+ }
/* Report lookahead tokens and errors. */
xml_puts (out, level, "<errors>");
/*-------------------------------------------------------------------------.
-| Report a reduction of RULE on LOOKAHEAD_TOKEN (which can be `default'). |
+| Report a reduction of RULE on LOOKAHEAD_TOKEN (which can be 'default'). |
| If not ENABLED, the rule is masked by a shift or a reduce (S/R and |
| R/R conflicts). |
`-------------------------------------------------------------------------*/
}
/* Nothing to report. */
- if (!report) {
- xml_puts (out, level, "<reductions/>");
- return;
- }
+ if (!report)
+ {
+ xml_puts (out, level, "<reductions/>");
+ return;
+ }
xml_puts (out, level, "<reductions>");
void
print_xml (void)
{
- state_number i;
int level = 0;
FILE *out = xfopen (spec_xml_file, "w");
/* print automaton */
fputc ('\n', out);
xml_puts (out, level + 1, "<automaton>");
- for (i = 0; i < nstates; i++)
- print_state (out, level + 2, states[i]);
+ {
+ state_number i;
+ for (i = 0; i < nstates; i++)
+ print_state (out, level + 2, states[i]);
+ }
xml_puts (out, level + 1, "</automaton>");
bitset_free (no_reduce_set);
xml_puts (out, 0, "</bison-xml-report>");
- free (escape_bufs[0].ptr);
- free (escape_bufs[1].ptr);
+ {
+ int i;
+ for (i = 0; i < num_escape_bufs; ++i)
+ free (escape_bufs[i].ptr);
+ }
xfclose (out);
}