xml: beware of user strings used to give a %prec to rules.

* tests/conflicts.at (%prec with user strings): New.
	* src/gram.c (grammar_rules_print_xml): Escape the precedence for
	XML output.
This commit is contained in:
Akim Demaille
2009-06-11 14:45:10 +02:00
parent 75c7a52a31
commit 517cb0ad9c
3 changed files with 30 additions and 5 deletions

View File

@@ -1,3 +1,10 @@
2009-06-11 Akim Demaille <demaille@gostai.com>
xml: beware of user strings used to give a %prec to rules.
* tests/conflicts.at (%prec with user strings): New.
* src/gram.c (grammar_rules_print_xml): Escape the precedence for
XML output.
2009-06-11 Akim Demaille <demaille@gostai.com>
hash: check insertion for memory exhaustion.

View File

@@ -1,7 +1,7 @@
/* Allocate input grammar variables for Bison.
Copyright (C) 1984, 1986, 1989, 2001, 2002, 2003, 2005, 2006
2007 Free Software Foundation, Inc.
2007, 2008, 2009 Free Software Foundation, Inc.
This file is part of Bison, the GNU Compiler Compiler.
@@ -224,7 +224,8 @@ grammar_rules_print_xml (FILE *out, int level)
fprintf (out, "<rule number=\"%d\" usefulness=\"%s\"",
rules[r].number, usefulness);
if (rules[r].precsym)
fprintf (out, " percent_prec=\"%s\"", rules[r].precsym->tag);
fprintf (out, " percent_prec=\"%s\"",
xml_escape (rules[r].precsym->tag));
fputs (">\n", out);
}
rule_lhs_print_xml (&rules[r], out, level + 3);

View File

@@ -544,9 +544,26 @@ input.y: expected 0 reduce/reduce conflicts
AT_CLEANUP
## ------------------------------- ##
## %no-default-prec without %prec ##
## ------------------------------- ##
## ------------------------- ##
## %prec with user strings. ##
## ------------------------- ##
AT_SETUP([%prec with user string])
AT_DATA([[input.y]],
[[%%
exp:
"foo" %prec "foo"
;
]])
AT_BISON_CHECK([-o input.c input.y])
AT_CLEANUP
## -------------------------------- ##
## %no-default-prec without %prec. ##
## -------------------------------- ##
AT_SETUP([%no-default-prec without %prec])