X-Git-Url: https://git.saurik.com/bison.git/blobdiff_plain/ccdc1577ef7fb32a5e30cb655337e7cd42b98987..8bf276d8207dd31432305002f3a9e81c80ca62af:/src/print-xml.c
diff --git a/src/print-xml.c b/src/print-xml.c
index ce71e158..7bdc36d5 100644
--- a/src/print-xml.c
+++ b/src/print-xml.c
@@ -1,6 +1,6 @@
/* 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.
@@ -45,7 +45,8 @@ struct escape_buf
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];
/*--------------------------------.
@@ -64,40 +65,39 @@ print_core (FILE *out, int level, state *s)
sitems = itemset;
snritems = nitemset;
- if (!snritems) {
- xml_puts (out, level, "");
- return;
- }
+ if (!snritems)
+ {
+ xml_puts (out, level, "");
+ return;
+ }
xml_puts (out, level, "");
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,
"- ",
- 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, "
");
printed = true;
@@ -105,12 +105,10 @@ print_core (FILE *out, int level, state *s)
}
if (!printed)
- {
- xml_printf (out, level + 1,
- "- ",
- rules[r].number,
- sp1 - sp);
- }
+ xml_printf (out, level + 1,
+ "
- ",
+ r->number,
+ sp1 - sp);
}
xml_puts (out, level, "
");
}
@@ -135,10 +133,11 @@ print_transitions (state *s, FILE *out, int level)
}
/* Nothing to report. */
- if (!n) {
- xml_puts (out, level, "");
- return;
- }
+ if (!n)
+ {
+ xml_puts (out, level, "");
+ return;
+ }
/* Report lookahead tokens and shifts. */
xml_puts (out, level, "");
@@ -189,10 +188,11 @@ print_errs (FILE *out, int level, state *s)
count = true;
/* Nothing to report. */
- if (!count) {
- xml_puts (out, level, "");
- return;
- }
+ if (!count)
+ {
+ xml_puts (out, level, "");
+ return;
+ }
/* Report lookahead tokens and errors. */
xml_puts (out, level, "");
@@ -209,7 +209,7 @@ print_errs (FILE *out, int level, state *s)
/*-------------------------------------------------------------------------.
-| 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). |
`-------------------------------------------------------------------------*/
@@ -286,10 +286,11 @@ print_reductions (FILE *out, int level, state *s)
}
/* Nothing to report. */
- if (!report) {
- xml_puts (out, level, "");
- return;
- }
+ if (!report)
+ {
+ xml_puts (out, level, "");
+ return;
+ }
xml_puts (out, level, "");
@@ -496,7 +497,6 @@ xml_escape (char const *str)
void
print_xml (void)
{
- state_number i;
int level = 0;
FILE *out = xfopen (spec_xml_file, "w");
@@ -522,8 +522,11 @@ print_xml (void)
/* print automaton */
fputc ('\n', out);
xml_puts (out, level + 1, "");
- 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, "");
bitset_free (no_reduce_set);
@@ -531,8 +534,11 @@ print_xml (void)
xml_puts (out, 0, "");
- 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);
}