bug-bison
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: i18n for yacc backend messages


From: Paul Eggert
Subject: Re: i18n for yacc backend messages
Date: Sun, 17 Apr 2005 01:17:41 -0700
User-agent: Gnus/5.1006 (Gnus v5.10.6) Emacs/21.4 (gnu/linux)

Jan Nieuwenhuizen <address@hidden> writes:

>    %token BOOK "\\book"
> ... will print as
>     bison.ly:8:5: error: syntax error, unexpected "\\book", expecting '{'

OK, thanks for making this clearer.  (I can be slow sometimes.)  I
installed the following patch.  This also follows up on Akim's
suggestion of 14 Apr to get rid of the quotes that are output with
"clear" names.

2005-04-17  Paul Eggert  <address@hidden>

        * NEWS: Bison-generated C parsers no longer quote literal strings
        associated with tokens.
        * src/output.c (prepare_symbols): Don't escape strings,
        since users don't want to see C escapes.
        * tests/calc.at (AT_CHECK_CALC): Adjust to lack of quotes
        in diagnostics.
        * tests/input.at (Torturing the Scanner): Likewise.
        * tests/regression.at (Token definitions, Web2c Actions): Likewise.

Index: NEWS
===================================================================
RCS file: /cvsroot/bison/bison/NEWS,v
retrieving revision 1.111
diff -p -u -r1.111 NEWS
--- NEWS        14 Apr 2005 00:08:56 -0000      1.111
+++ NEWS        17 Apr 2005 08:06:17 -0000
@@ -7,6 +7,12 @@ Changes in version 2.0a, ????-??-??:
   English to the user's language, e.g., _("syntax error").  By default,
   _ is defined to be a no-op macro so the strings are not translated.
 
+* When generating verbose diagnostics, Bison-generated C parsers no longer
+  quote the literal strings associated with tokens.  For example, for
+  a syntax error associated with '%token NUM "number"' they might
+  print 'syntax error, unexpected number' instead of 'syntax error,
+  unexpected "number"'.
+
 Changes in version 2.0, 2004-12-25:
 
 * Possibly-incompatible changes
Index: src/output.c
===================================================================
RCS file: /cvsroot/bison/bison/src/output.c,v
retrieving revision 1.230
diff -p -u -r1.230 output.c
--- src/output.c        7 Mar 2005 06:41:39 -0000       1.230
+++ src/output.c        17 Apr 2005 08:06:17 -0000
@@ -162,7 +162,10 @@ prepare_symbols (void)
     int j = 2;
     for (i = 0; i < nsyms; i++)
       {
-       const char *cp = quotearg_style (c_quoting_style, symbols[i]->tag);
+       char const *tag = symbols[i]->tag;
+       char const *cp = (*tag == '"'
+                         ? tag
+                         : quotearg_style (c_quoting_style, tag));
        /* Width of the next token, including the two quotes, the
           comma and the space.  */
        int width = strlen (cp) + 2;
Index: tests/calc.at
===================================================================
RCS file: /cvsroot/bison/bison/tests/calc.at,v
retrieving revision 1.71
diff -p -u -r1.71 calc.at
--- tests/calc.at       10 Jan 2005 18:22:11 -0000      1.71
+++ tests/calc.at       17 Apr 2005 08:06:17 -0000
@@ -467,9 +467,9 @@ _AT_CHECK_CALC([$1],
 
 # Some syntax errors.
 _AT_CHECK_CALC_ERROR([$1], [1], [0 0], [13],
-                     [1.2: syntax error, unexpected "number"])
+                     [1.2: syntax error, unexpected number])
 _AT_CHECK_CALC_ERROR([$1], [1], [1//2], [18],
-                     [1.2: syntax error, unexpected '/', expecting "number" or 
'-' or '(' or '!'])
+                     [1.2: syntax error, unexpected '/', expecting number or 
'-' or '(' or '!'])
 _AT_CHECK_CALC_ERROR([$1], [1], [error], [5],
                      [1.0: syntax error, unexpected $undefined])
 _AT_CHECK_CALC_ERROR([$1], [1], [1 = 2 = 3], [26],
@@ -481,7 +481,7 @@ _AT_CHECK_CALC_ERROR([$1], [1],
                      [2.0: syntax error, unexpected '+'])
 # Exercise error messages with EOF: work on an empty file.
 _AT_CHECK_CALC_ERROR([$1], [1], [/dev/null], [5],
-                     [1.0: syntax error, unexpected "end of input"])
+                     [1.0: syntax error, unexpected end of input])
 
 # Exercise the error token: without it, we die at the first error,
 # hence be sure to
@@ -502,20 +502,20 @@ _AT_CHECK_CALC_ERROR([$1], [1], [/dev/nu
 _AT_CHECK_CALC_ERROR([$1], [0],
                      [() + (1 + 1 + 1 +) + (* * *) + (1 * 2 * *) = 1],
                      [188],
-[1.1: syntax error, unexpected ')', expecting "number" or '-' or '(' or '!'
-1.17: syntax error, unexpected ')', expecting "number" or '-' or '(' or '!'
-1.22: syntax error, unexpected '*', expecting "number" or '-' or '(' or '!'
-1.40: syntax error, unexpected '*', expecting "number" or '-' or '(' or '!'
+[1.1: syntax error, unexpected ')', expecting number or '-' or '(' or '!'
+1.17: syntax error, unexpected ')', expecting number or '-' or '(' or '!'
+1.22: syntax error, unexpected '*', expecting number or '-' or '(' or '!'
+1.40: syntax error, unexpected '*', expecting number or '-' or '(' or '!'
 calc: error: 4444 != 1])
 
 # The same, but this time exercising explicitly triggered syntax errors.
 # POSIX says the look-ahead causing the error should not be discarded.
 _AT_CHECK_CALC_ERROR([$1], [0], [(!) + (0 0) = 1], [75],
-[1.9: syntax error, unexpected "number"
+[1.9: syntax error, unexpected number
 calc: error: 2222 != 1])
 _AT_CHECK_CALC_ERROR([$1], [0], [(- *) + (0 0) = 1], [85],
-[1.3: syntax error, unexpected '*', expecting "number" or '-' or '(' or '!'
-1.11: syntax error, unexpected "number"
+[1.3: syntax error, unexpected '*', expecting number or '-' or '(' or '!'
+1.11: syntax error, unexpected number
 calc: error: 2222 != 1])
 AT_BISON_OPTION_POPDEFS
 
Index: tests/regression.at
===================================================================
RCS file: /cvsroot/bison/bison/tests/regression.at,v
retrieving revision 1.89
diff -p -u -r1.89 regression.at
--- tests/regression.at 16 Apr 2005 06:32:51 -0000      1.89
+++ tests/regression.at 17 Apr 2005 08:06:17 -0000
@@ -324,9 +324,9 @@ int yylex (void);
 %token B_TOKEN "b"
 %token C_TOKEN 'c'
 %token 'd' D_TOKEN
-%token SPECIAL "\\\'\?\"\a\b\f\n\r\t\v\001\377\x001\x0000ff"
+%token SPECIAL "\\\'\?\"\n\t??!"
 %%
-exp: "a" "\\\'\?\"\a\b\f\n\r\t\v\001\377\x001\x0000ff";
+exp: "a" "\\\'\?\"\n\t??!";
 %%
 void
 yyerror (char const *s)
@@ -350,7 +350,8 @@ main (void)
 AT_CHECK([bison -o input.c input.y])
 AT_COMPILE([input])
 AT_PARSER_CHECK([./input], 1, [],
-[syntax error, unexpected "\\'?\"\a\b\f\n\r\t\v\001\377\001\377", expecting "a"
+[syntax error, unexpected \'?"
+       ??!, expecting a
 ])
 AT_CLEANUP
 
@@ -634,8 +635,8 @@ static const unsigned char yyrline[] =
 };
 static const char *const yytname[] =
 {
-  "$end", "error", "$undefined", "\"if\"", "\"const\"", "\"then\"",
-  "\"else\"", "$accept", "statement", "struct_stat", "if", "else", 0
+  "$end", "error", "$undefined", "if", "const", "then", "else", "$accept",
+  "statement", "struct_stat", "if", "else", 0
 };
 static const unsigned short int yytoknum[] =
 {
pIndex: tests/input.at
===================================================================
RCS file: /cvsroot/bison/bison/tests/input.at,v
retrieving revision 1.32
diff -p -u -r1.32 input.at
--- tests/input.at      12 Apr 2005 22:35:53 -0000      1.32
+++ tests/input.at      17 Apr 2005 08:11:20 -0000
@@ -132,7 +132,7 @@ AT_SETUP([Torturing the Scanner])
 
 AT_DATA([input.y], [])
 AT_CHECK([bison input.y], [1], [],
-[[input.y:1.1: syntax error, unexpected "end of file"
+[[input.y:1.1: syntax error, unexpected end of file
 ]])
 
 




reply via email to

[Prev in Thread] Current Thread [Next in Thread]