#line should have quoted strings.

Ideally, this should be done by m4_quotearg.
* src/scan-skel.l: Include quotearg.h.
Quote __ofile__.
* src/output.c (symbol_printers_output)
(symbol_destructors_output): Quote the file name.
This commit is contained in:
Akim Demaille
2002-11-06 16:22:04 +00:00
parent 3d9a71d28a
commit 6e40b4ebd4
4 changed files with 29 additions and 10 deletions

View File

@@ -1,3 +1,13 @@
2002-11-06 Akim Demaille <akim@epita.fr>
#line should have quoted strings.
Ideally, this should be done by m4_quotearg.
* src/scan-skel.l: Include quotearg.h.
Quote __ofile__.
* src/output.c (symbol_printers_output)
(symbol_destructors_output): Quote the file name.
2002-11-06 Akim Demaille <akim@epita.fr>
* tests/regression.at (Invalid inputs): Adjust to the recent

17
NEWS
View File

@@ -8,13 +8,6 @@ Changes in version 1.75b:
* --no-line works properly.
Changes in version 1.75a, 2002-10-24:
* Bison can no longer be built by a K&R C compiler; it requires C89 or
later to be built. This change originally took place a few versions
ago, but nobody noticed until we recently asked someone to try
building Bison with a K&R C compiler.
* %error-verbose
This new directive is preferred over YYERROR_VERBOSE.
@@ -26,6 +19,16 @@ Changes in version 1.75a, 2002-10-24:
* #line
Bison now recognizes #line in its input, and forwards them.
* #line
File names are properly escaped. E.g. foo\bar.y give #line 123 "foo\\bar.y".
Changes in version 1.75a, 2002-10-24:
* Bison can no longer be built by a K&R C compiler; it requires C89 or
later to be built. This change originally took place a few versions
ago, but nobody noticed until we recently asked someone to try
building Bison with a K&R C compiler.
Changes in version 1.75, 2002-10-14:
* Bison should now work on 64-bit hosts.

View File

@@ -380,7 +380,8 @@ symbol_destructors_output (FILE *out)
destructor, typename. */
fprintf (out, "%s[[[%s]], [[%d]], [[%s]], [[%d]], [[%s]], [[%s]]]",
first ? "" : ",\n",
symbol->destructor_location.file,
quotearg_style (escape_quoting_style,
symbol->destructor_location.file),
symbol->destructor_location.first_line,
symbol->tag,
symbol->number,
@@ -414,7 +415,8 @@ symbol_printers_output (FILE *out)
printer, typename. */
fprintf (out, "%s[[[%s]], [[%d]], [[%s]], [[%d]], [[%s]], [[%s]]]",
first ? "" : ",\n",
symbol->printer_location.file,
quotearg_style (escape_quoting_style,
symbol->printer_location.file),
symbol->printer_location.first_line,
symbol->tag,
symbol->number,

View File

@@ -23,12 +23,16 @@
%{
#include "system.h"
#include "quotearg.h"
#include "error.h"
#include "getargs.h"
#include "files.h"
int skel_lex (void);
static int yylineno = 1;
static char *yyoutname = NULL;
%}
%%
/* This is an approximation, but we don't need more. */
@@ -44,7 +48,7 @@ static char *yyoutname = NULL;
"@:>@" fputc (']', yyout);
"__oline__" fprintf (yyout, "%d", yylineno+1);
"__ofile__" fprintf (yyout, "%s", yyoutname);
"__ofile__" fprintf (yyout, "%s", quotearg_style (escape_quoting_style, yyoutname));
[^@_\n]+ ECHO;
\n+ yylineno += yyleng; ECHO;
. ECHO;