+2005-03-06 Paul Eggert <eggert@cs.ucla.edu>
+
+ * src/output.c (escaped_output): Renamed from
+ escaped_file_name_output, since we now use it for symbol tags as
+ well. All uses changed.
+ (symbol_destructors_output, symbol_printers_output):
+ Escape symbol tags too.
+ Problem reported by Matyas Forstner in
+ <http://lists.gnu.org/archive/html/bug-bison/2005-03/msg00009.html>.
+
+ * src/muscle_tab.c (muscle_code_grow): Don't quote numbers; it's
+ not needed.
+ * src/output.c (user_actions_output, token_definitions_output,
+ symbol_destructors_output, symbol_printers_output): Likewise.
+ * src/reader.c (prologue_augment): Likewise.
+ * src/scan-gram.l (handle_action_dollar, handle_action_at): Likewise.
+
+ * src/vcg.c (output_edge): Don't quote linestyle arg.
+ Problem reported by twlevo@xs4all.nl.
+
2005-02-28 Paul Eggert <eggert@cs.ucla.edu>
* doc/bison.texinfo (Semantic Tokens): Fix scoping problem in
-----
Copyright (C) 1987, 1988, 1991, 1992, 1993, 1994, 1995, 1996, 1997,
-1998, 1999, 2000, 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
+1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc.
This file is part of Bison, the GNU Compiler Compiler.
/* Muscle table manager for Bison.
- Copyright (C) 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
+ Copyright (C) 2001, 2002, 2003, 2004, 2005 Free Software
+ Foundation, Inc.
This file is part of Bison, the GNU Compiler Compiler.
muscle_code_grow (const char *key, const char *val, location loc)
{
char *extension = NULL;
- obstack_fgrow1 (&muscle_obstack, "]b4_syncline([[%d]], [[", loc.start.line);
+ obstack_fgrow1 (&muscle_obstack, "]b4_syncline(%d, [[", loc.start.line);
MUSCLE_OBSTACK_SGROW (&muscle_obstack,
quotearg_style (c_quoting_style, loc.start.file));
obstack_sgrow (&muscle_obstack, "]])[\n");
/* Output the generated parsing program for Bison.
- Copyright (C) 1984, 1986, 1989, 1992, 2000, 2001, 2002, 2003, 2004
+ Copyright (C) 1984, 1986, 1989, 1992, 2000, 2001, 2002, 2003, 2004, 2005
Free Software Foundation, Inc.
This file is part of Bison, the GNU Compiler Compiler.
GENERATE_MUSCLE_INSERT_TABLE(muscle_insert_state_number_table, state_number)
-/*----------------------------------------------------------------------.
-| Print to OUT a representation of FILENAME escaped both for C and M4. |
-`----------------------------------------------------------------------*/
+/*--------------------------------------------------------------------.
+| Print to OUT a representation of STRING escaped both for C and M4. |
+`--------------------------------------------------------------------*/
static void
-escaped_file_name_output (FILE *out, char const *filename)
+escaped_output (FILE *out, char const *string)
{
char const *p;
fprintf (out, "[[");
- for (p = quotearg_style (c_quoting_style, filename); *p; p++)
+ for (p = quotearg_style (c_quoting_style, string); *p; p++)
switch (*p)
{
case '$': fputs ("$][", out); break;
{
fprintf (out, " case %d:\n", r + 1);
- fprintf (out, "]b4_syncline([[%d]], ",
+ fprintf (out, "]b4_syncline(%d, ",
rules[r].action_location.start.line);
- escaped_file_name_output (out, rules[r].action_location.start.file);
+ escaped_output (out, rules[r].action_location.start.file);
fprintf (out, ")[\n");
fprintf (out, " %s\n break;\n\n",
rules[r].action);
if (strchr (sym->tag, '.') || strchr (sym->tag, '$'))
continue;
- fprintf (out, "%s[[[%s]], [%d]]",
+ fprintf (out, "%s[[[%s]], %d]",
sep, sym->tag, number);
sep = ",\n";
}
destructor, optional typename. */
fprintf (out, "%s[", sep);
sep = ",\n";
- escaped_file_name_output (out, sym->destructor_location.start.file);
- fprintf (out, ", [[%d]], [[%s]], [[%d]], [[%s]]",
- sym->destructor_location.start.line,
- sym->tag,
- sym->number,
- sym->destructor);
+ escaped_output (out, sym->destructor_location.start.file);
+ fprintf (out, ", %d, ", sym->destructor_location.start.line);
+ escaped_output (out, sym->tag);
+ fprintf (out, ", %d, [[%s]]", sym->number, sym->destructor);
if (sym->type_name)
fprintf (out, ", [[%s]]", sym->type_name);
fputc (']', out);
printer, optional typename. */
fprintf (out, "%s[", sep);
sep = ",\n";
- escaped_file_name_output (out, sym->printer_location.start.file);
- fprintf (out, ", [[%d]], [[%s]], [[%d]], [[%s]]",
- sym->printer_location.start.line,
- sym->tag,
- sym->number,
- sym->printer);
+ escaped_output (out, sym->printer_location.start.file);
+ fprintf (out, ", %d, ", sym->printer_location.start.line);
+ escaped_output (out, sym->tag);
+ fprintf (out, ", %d, [[%s]]", sym->number, sym->printer);
if (sym->type_name)
fprintf (out, ", [[%s]]", sym->type_name);
fputc (']', out);
/* Input parser for Bison
- Copyright (C) 1984, 1986, 1989, 1992, 1998, 2000, 2001, 2002, 2003
- Free Software Foundation, Inc.
+ Copyright (C) 1984, 1986, 1989, 1992, 1998, 2000, 2001, 2002, 2003,
+ 2005 Free Software Foundation, Inc.
This file is part of Bison, the GNU Compiler Compiler.
struct obstack *oout =
!typed ? &pre_prologue_obstack : &post_prologue_obstack;
- obstack_fgrow1 (oout, "]b4_syncline([[%d]], [[", loc.start.line);
+ obstack_fgrow1 (oout, "]b4_syncline(%d, [[", loc.start.line);
MUSCLE_OBSTACK_SGROW (oout,
quotearg_style (c_quoting_style, loc.start.file));
obstack_sgrow (oout, "]])[\n");
/* Bison Grammar Scanner -*- C -*-
- Copyright (C) 2002, 2003, 2004 Free Software Foundation, Inc.
+ Copyright (C) 2002, 2003, 2004, 2005 Free Software Foundation, Inc.
This file is part of Bison, the GNU Compiler Compiler.
unsigned long int c = strtoul (yytext + 1, 0, 8);
if (UCHAR_MAX < c)
complain_at (*loc, _("invalid escape sequence: %s"), quote (yytext));
- else if (! c)
+ else if (! c)
complain_at (*loc, _("invalid null character: %s"), quote (yytext));
else
obstack_1grow (&obstack_for_string, c);
if (!type_name)
type_name = "";
obstack_fgrow3 (&obstack_for_string,
- "]b4_rhs_value([%d], [%d], [%s])[",
+ "]b4_rhs_value(%d, %d, [%s])[",
rule_length, n, type_name);
}
else
if (INT_MIN <= num && num <= rule_length && ! get_errno ())
{
int n = num;
- obstack_fgrow2 (&obstack_for_string, "]b4_rhs_location([%d], [%d])[",
+ obstack_fgrow2 (&obstack_for_string, "]b4_rhs_location(%d, %d)[",
rule_length, n);
}
else