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 04d1e39dd3
commit 44bb908485
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, 2008 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

@@ -600,9 +600,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])