style: scope reduction in print-xml

* src/print-xml.c: here.
This commit is contained in:
Akim Demaille
2019-01-28 19:25:32 +01:00
parent 94054924a9
commit c4f143eb96
2 changed files with 19 additions and 26 deletions

View File

@@ -19,11 +19,12 @@
along with this program. If not, see <http://www.gnu.org/licenses/>. */ along with this program. If not, see <http://www.gnu.org/licenses/>. */
#include <config.h> #include <config.h>
#include "print-xml.h"
#include "system.h" #include "system.h"
#include <stdarg.h>
#include <bitset.h> #include <bitset.h>
#include <stdarg.h>
#include "closure.h" #include "closure.h"
#include "conflicts.h" #include "conflicts.h"
@@ -32,7 +33,6 @@
#include "gram.h" #include "gram.h"
#include "lalr.h" #include "lalr.h"
#include "lr0.h" #include "lr0.h"
#include "print-xml.h"
#include "print.h" #include "print.h"
#include "reader.h" #include "reader.h"
#include "reduce.h" #include "reduce.h"
@@ -57,7 +57,6 @@ static struct escape_buf escape_bufs[num_escape_bufs];
static void static void
print_core (FILE *out, int level, state *s) print_core (FILE *out, int level, state *s)
{ {
size_t i;
item_number *sitems = s->items; item_number *sitems = s->items;
size_t snritems = s->nitems; size_t snritems = s->nitems;
@@ -74,7 +73,7 @@ print_core (FILE *out, int level, state *s)
xml_puts (out, level, "<itemset>"); xml_puts (out, level, "<itemset>");
for (i = 0; i < snritems; i++) for (size_t i = 0; i < snritems; i++)
{ {
bool printed = false; bool printed = false;
item_number *sp1 = ritem + sitems[i]; item_number *sp1 = ritem + sitems[i];
@@ -380,15 +379,13 @@ print_state (FILE *out, int level, state *s)
static void static void
print_grammar (FILE *out, int level) print_grammar (FILE *out, int level)
{ {
symbol_number i;
fputc ('\n', out); fputc ('\n', out);
xml_puts (out, level, "<grammar>"); xml_puts (out, level, "<grammar>");
grammar_rules_print_xml (out, level); grammar_rules_print_xml (out, level);
/* Terminals */ /* Terminals */
xml_puts (out, level + 1, "<terminals>"); xml_puts (out, level + 1, "<terminals>");
for (i = 0; i < max_user_token_number + 1; i++) for (symbol_number i = 0; i < max_user_token_number + 1; i++)
if (token_translations[i] != undeftoken->content->number) if (token_translations[i] != undeftoken->content->number)
{ {
char const *tag = symbols[token_translations[i]]->tag; char const *tag = symbols[token_translations[i]]->tag;
@@ -411,7 +408,7 @@ print_grammar (FILE *out, int level)
/* Nonterminals */ /* Nonterminals */
xml_puts (out, level + 1, "<nonterminals>"); xml_puts (out, level + 1, "<nonterminals>");
for (i = ntokens; i < nsyms + nuseless_nonterminals; i++) for (symbol_number i = ntokens; i < nsyms + nuseless_nonterminals; i++)
{ {
char const *tag = symbols[i]->tag; char const *tag = symbols[i]->tag;
xml_printf (out, level + 2, xml_printf (out, level + 2,
@@ -428,8 +425,7 @@ print_grammar (FILE *out, int level)
void void
xml_indent (FILE *out, int level) xml_indent (FILE *out, int level)
{ {
int i; for (int i = 0; i < level; i++)
for (i = 0; i < level; i++)
fputs (" ", out); fputs (" ", out);
} }
@@ -460,14 +456,13 @@ xml_escape_string (struct escape_buf *buf, char const *str)
{ {
size_t len = strlen (str); size_t len = strlen (str);
size_t max_expansion = sizeof "&quot;" - 1; size_t max_expansion = sizeof "&quot;" - 1;
char *p;
if (buf->size <= max_expansion * len) if (buf->size <= max_expansion * len)
{ {
buf->size = max_expansion * len + 1; buf->size = max_expansion * len + 1;
buf->ptr = x2realloc (buf->ptr, &buf->size); buf->ptr = x2realloc (buf->ptr, &buf->size);
} }
p = buf->ptr; char *p = buf->ptr;
for (; *str; str++) for (; *str; str++)
switch (*str) switch (*str)
@@ -498,11 +493,11 @@ xml_escape (char const *str)
void void
print_xml (void) print_xml (void)
{ {
int level = 0;
FILE *out = xfopen (spec_xml_file, "w"); FILE *out = xfopen (spec_xml_file, "w");
fputs ("<?xml version=\"1.0\"?>\n\n", out); fputs ("<?xml version=\"1.0\"?>\n\n", out);
int level = 0;
xml_printf (out, level, xml_printf (out, level,
"<bison-xml-report version=\"%s\" bug-report=\"%s\"" "<bison-xml-report version=\"%s\" bug-report=\"%s\""
" url=\"%s\">", " url=\"%s\">",
@@ -517,27 +512,21 @@ print_xml (void)
/* print grammar */ /* print grammar */
print_grammar (out, level + 1); print_grammar (out, level + 1);
no_reduce_set = bitset_create (ntokens, BITSET_FIXED); no_reduce_set = bitset_create (ntokens, BITSET_FIXED);
/* print automaton */ /* print automaton */
fputc ('\n', out); fputc ('\n', out);
xml_puts (out, level + 1, "<automaton>"); xml_puts (out, level + 1, "<automaton>");
{ for (state_number i = 0; i < nstates; i++)
state_number i; print_state (out, level + 2, states[i]);
for (i = 0; i < nstates; i++)
print_state (out, level + 2, states[i]);
}
xml_puts (out, level + 1, "</automaton>"); xml_puts (out, level + 1, "</automaton>");
bitset_free (no_reduce_set); bitset_free (no_reduce_set);
xml_puts (out, 0, "</bison-xml-report>"); xml_puts (out, 0, "</bison-xml-report>");
{ for (int i = 0; i < num_escape_bufs; ++i)
int i; free (escape_bufs[i].ptr);
for (i = 0; i < num_escape_bufs; ++i)
free (escape_bufs[i].ptr);
}
xfclose (out); xfclose (out);
} }

View File

@@ -21,6 +21,10 @@
#ifndef PRINT_XML_H_ #ifndef PRINT_XML_H_
# define PRINT_XML_H_ # define PRINT_XML_H_
# include <config.h>
# include <stdio.h>
void xml_indent (FILE *out, int level); void xml_indent (FILE *out, int level);
void xml_puts (FILE *, int, char const *); void xml_puts (FILE *, int, char const *);
void xml_printf (FILE *, int, char const *, ...); void xml_printf (FILE *, int, char const *, ...);