From: Akim Demaille Date: Thu, 11 Jun 2009 12:45:10 +0000 (+0200) Subject: xml: beware of user strings used to give a %prec to rules. X-Git-Tag: v2.7.90~857 X-Git-Url: https://git.saurik.com/bison.git/commitdiff_plain/44bb9084856ec2c421c91e1e1bd0f20437ce83b8 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. --- diff --git a/ChangeLog b/ChangeLog index 44db35c0..0147e0a5 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2009-06-11 Akim Demaille + + 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 hash: check insertion for memory exhaustion. diff --git a/src/gram.c b/src/gram.c index 725293bb..b2a0cb7a 100644 --- a/src/gram.c +++ b/src/gram.c @@ -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, "tag); + fprintf (out, " percent_prec=\"%s\"", + xml_escape (rules[r].precsym->tag)); fputs (">\n", out); } rule_lhs_print_xml (&rules[r], out, level + 3); diff --git a/tests/conflicts.at b/tests/conflicts.at index 4c046dc7..f91be51d 100644 --- a/tests/conflicts.at +++ b/tests/conflicts.at @@ -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])