Merge remote-tracking branch 'origin/maint'

* origin/maint: (46 commits)
  doc: minor style change
  maint: use gendocs's new -I option
  regen
  yacc.c: do not define location support when not using locations
  maint: be compilable with GCC 4.0
  tests: address a warning from GCC 4.4
  tests: don't use options that Clang does not support
  tests: restore the tests on -Werror
  regen
  parse-gram: update the Bison interface
  fix comment
  maint: post-release administrivia
  version 2.6.4
  regen
  2.6.4: botched 2.6.3
  maint: post-release administrivia
  version 2.6.3
  gnulib: update
  tests: check %no-lines
  NEWS: warnings with clang
  ...

Conflicts:
	NEWS
	TODO
	data/c.m4
	data/java.m4
	doc/Makefile.am
	src/getargs.c
	src/getargs.h
	src/output.c
	src/parse-gram.c
	src/parse-gram.h
	src/parse-gram.y
	src/reader.h
This commit is contained in:
Akim Demaille
2012-10-26 16:50:26 +02:00
26 changed files with 795 additions and 130 deletions

View File

@@ -40,11 +40,32 @@
| Construct the node labels. |
`----------------------------*/
/* Print the lhs of a rule in such a manner that there is no vertical
repetition, like in *.output files. */
static void
print_lhs (struct obstack *oout, rule *previous_rule, rule *r)
{
if (previous_rule && STREQ (previous_rule->lhs->tag, r->lhs->tag))
{
int i;
for (i = 0; i < strlen (r->lhs->tag); ++i)
obstack_1grow (oout, ' ');
obstack_1grow (oout, '|');
}
else
{
obstack_sgrow (oout, escape (r->lhs->tag));
obstack_1grow (oout, ':');
}
}
static void
print_core (struct obstack *oout, state *s)
{
size_t i;
item_number *sitems = s->items;
rule *previous_rule = NULL;
size_t i;
size_t snritems = s->nitems;
/* Output all the items of a state, not only its kernel. */
@@ -55,7 +76,8 @@ print_core (struct obstack *oout, state *s)
snritems = nitemset;
}
obstack_printf (oout, "state %d\\n", s->number);
obstack_printf (oout, _("State %d"), s->number);
obstack_sgrow (oout, "\\n");
for (i = 0; i < snritems; i++)
{
item_number *sp;
@@ -69,12 +91,14 @@ print_core (struct obstack *oout, state *s)
r = item_number_as_rule_number (*sp);
obstack_printf (oout, "%d: %s -> ", r, escape (rules[r].lhs->tag));
obstack_printf (oout, "%3d ", r);
print_lhs (oout, previous_rule, &rules[r]);
previous_rule = &rules[r];
for (sp = rules[r].rhs; sp < sp1; sp++)
obstack_printf (oout, "%s ", escape (symbols[*sp]->tag));
obstack_1grow (oout, '.');
obstack_sgrow (oout, " .");
for (/* Nothing */; *sp >= 0; ++sp)
obstack_printf (oout, " %s", escape (symbols[*sp]->tag));
@@ -93,7 +117,7 @@ print_core (struct obstack *oout, state *s)
bitset_iterator biter;
int k;
char const *sep = "";
obstack_1grow (oout, '[');
obstack_sgrow (oout, " [");
BITSET_FOR_EACH (biter, reds->lookahead_tokens[redno], k, 0)
{
obstack_sgrow (oout, sep);
@@ -116,9 +140,8 @@ print_core (struct obstack *oout, state *s)
static void
print_actions (state const *s, FILE *fgraph)
{
int i;
transitions const *trans = s->transitions;
int i;
/* Display reductions. */
output_red (s, s->reductions, fgraph);