Add i18n support to the GLR skeleton. Partially fix the C++

skeleton; a C++ expert needs to finish this.  Remove debugging
msgids; there's little point to having them translated, since they
can be understood only by someone who can read the
(English-language) source code.

Generate runtime-po/bison-runtime.pot automatically, so that we
don't have to worry about garbage getting in that file.  We'll
make sure after the next official release that old msgids don't
get lost.  See
<http://lists.gnu.org/archive/html/bison-patches/2005-07/msg00119.html>.

* runtime-po/Makefile.in.in, runtime-po/bison-runtime.pot: Remove.
Now auto-generated.
* PACKAGING: Don't claim that Gawk, GCC, Perl use this method yet.
Fix typos in explanations of the runtime file.
* bootstrap: Change gettext keyword from YYI18N to YY_.
Use standard Makefile.in.in in runtime-po, since we'll arrange
for backward-compatible bison-runtime.po files in a different way.
* data/glr.c (YY_): New macro, from yacc.c.
(yyuserAction, yyreportAmbiguity, yyreportSyntaxError, yyparse):
Translate messages intended for users.
(yyreportSyntaxError): Change "virtual memory" to "memory" to match
the wording in the other skeletons.  We don't know that the memory
is virtual.
* data/lalr1.cc (YY_): Renamed from _.  All uses changed.
Use same method that yacc.c uses.
Don't translate debugging messages.
(yy::yyreport_syntax_error): Put in a FIXME for the i18n stuff;
it doesn't work (yet), and requires C++ expertise to fix.
* data/yacc.c (YY_): Renamed from YY18N.  All uses changed.
Move defn to a more logical place, to be consistent with other
skeletons.
Don't translate debugging messages.
Don't assume line numbers fit in unsigned int; use unsigned long fmts.
* doc/bison.texinfo: Mention <libintl.h>.  Change glibc cross reference
to gettext cross reference.  Add indexing terms.  Mention YYENABLE_NLS.
* runtime-po/POTFILES.in: Add data/glr.c, data/lalr1.cc.
This commit is contained in:
Paul Eggert
2005-07-18 22:10:15 +00:00
parent ac8c5689f8
commit 30757c8c93
11 changed files with 153 additions and 538 deletions

View File

@@ -417,9 +417,16 @@ m4_if(b4_defines_flag, 0, [],
[
#include @output_header_name@])[
/* INFRINGES ON USER NAME SPACE */
#ifndef _
# define _(msgid) msgid
#ifndef YY_
# if YYENABLE_NLS
# if ENABLE_NLS
# include <libintl.h> /* FIXME: INFRINGES ON USER NAME SPACE */
# define YY_(msgid) dgettext ("bison-runtime", msgid)
# endif
# endif
# ifndef YY_
# define YY_(msgid) msgid
# endif
#endif
/* A pseudo ostream that takes yydebug_ into account. */
@@ -551,7 +558,7 @@ yy::]b4_parser_class_name[::parse ()
{
int yyresult_;
YYCDEBUG << _("Starting parse") << std::endl;
YYCDEBUG << "Starting parse" << std::endl;
yynerrs_ = 0;
yyerrstatus_ = 0;
@@ -583,7 +590,7 @@ b4_syncline([@oline@], [@ofile@])])dnl
/* New state. */
yynewstate:
yystate_stack_.push (yystate_);
YYCDEBUG << _("Entering state ") << yystate_ << std::endl;
YYCDEBUG << "Entering state " << yystate_ << std::endl;
goto yybackup;
/* Backup. */
@@ -602,12 +609,12 @@ yybackup:
if (yylooka_ <= yyeof_)
{
yylooka_ = yyilooka_ = yyeof_;
YYCDEBUG << _("Now at end of input.") << std::endl;
YYCDEBUG << "Now at end of input." << std::endl;
}
else
{
yyilooka_ = yytranslate_ (yylooka_);
YY_SYMBOL_PRINT (_("Next token is"), yyilooka_, &yylval, &yylloc);
YY_SYMBOL_PRINT ("Next token is", yyilooka_, &yylval, &yylloc);
}
/* If the proper action on seeing token ILOOKA_ is to reduce or to
@@ -636,7 +643,7 @@ yybackup:
goto yyacceptlab;
/* Shift the look-ahead token. */
YY_SYMBOL_PRINT (_("Shifting"), yyilooka_, &yylval, &yylloc);
YY_SYMBOL_PRINT ("Shifting", yyilooka_, &yylval, &yylloc);
/* Discard the token being shifted unless it is eof. */
if (yylooka_ != yyeof_)
@@ -734,7 +741,7 @@ yyerrlab:
yypop_ ();
if (yystate_stack_.height () == 1)
YYABORT;
yydestruct_ (_("Error: popping"),
yydestruct_ ("Error: popping",
yystos_[yystate_stack_[0]],
&yysemantic_stack_[0],
&yylocation_stack_[0]);
@@ -742,7 +749,7 @@ yyerrlab:
}
else
{
yydestruct_ (_("Error: discarding"), yyilooka_, &yylval, &yylloc);
yydestruct_ ("Error: discarding", yyilooka_, &yylval, &yylloc);
yylooka_ = yyempty_;
}
}
@@ -793,7 +800,7 @@ yyerrlab1:
YYABORT;
yyerror_range_[0] = yylocation_stack_[0];
yydestruct_ (_("Error: popping"),
yydestruct_ ("Error: popping",
yystos_[yystate_],
&yysemantic_stack_[0], &yylocation_stack_[0]);
yypop_ ();
@@ -812,7 +819,7 @@ yyerrlab1:
yylocation_stack_.push (yyloc);
/* Shift the error token. */
YY_SYMBOL_PRINT (_("Shifting"), yystos_[yyn_],
YY_SYMBOL_PRINT ("Shifting", yystos_[yyn_],
&yysemantic_stack_[0], &yylocation_stack_[0]);
yystate_ = yyn_;
@@ -830,14 +837,14 @@ yyabortlab:
yyreturn:
if (yylooka_ != yyeof_ && yylooka_ != yyempty_)
yydestruct_ (_("Error: discarding lookahead"), yyilooka_, &yylval, &yylloc);
yydestruct_ ("Error: discarding lookahead", yyilooka_, &yylval, &yylloc);
return yyresult_;
}
void
yy::]b4_parser_class_name[::yylex_ ()
{
YYCDEBUG << _("Reading a token: ");
YYCDEBUG << "Reading a token: ";
yylooka_ = ]b4_c_function_call([yylex], [int],
[[YYSTYPE*], [&yylval]][]dnl
b4_location_if([, [[location*], [&yylloc]]])dnl
@@ -869,7 +876,15 @@ yy::]b4_parser_class_name[::yyreport_syntax_error_ ()
if (yycheck_[x + yyn_] == x && x != yyterror_)
++count;
message = _("syntax error, unexpected ");
// FIXME: This method of building the message is not compatible
// with internationalization. It should work like yacc.c does it.
// That is, first build a string that looks like this:
// "syntax error, unexpected %s or %s or %s"
// Then, invoke YY_ on this string.
// Finally, use the string as a format to output
// yyname_[yyilooka_], etc.
// Until this gets fixed, this message appears in English only.
message = "syntax error, unexpected ";
message += yyname_[yyilooka_];
if (count < 5)
{
@@ -877,14 +892,14 @@ yy::]b4_parser_class_name[::yyreport_syntax_error_ ()
for (int x = yyxbegin; x < yyxend; ++x)
if (yycheck_[x + yyn_] == x && x != yyterror_)
{
message += (!count++) ? _(", expecting ") : _(" or ");
message += (!count++) ? ", expecting " : " or ";
message += yyname_[x];
}
}
}
else
#endif
message = _("syntax error");
message = YY_("syntax error");
error (yylloc, message);
}
}
@@ -1008,7 +1023,7 @@ yy::]b4_parser_class_name[::yyrline_[] =
void
yy::]b4_parser_class_name[::yystack_print_ ()
{
*yycdebug_ << _("Stack now");
*yycdebug_ << "Stack now";
for (state_stack_type::const_iterator i = yystate_stack_.begin ();
i != yystate_stack_.end (); ++i)
*yycdebug_ << ' ' << *i;
@@ -1021,8 +1036,8 @@ yy::]b4_parser_class_name[::yyreduce_print_ (int yyrule)
{
unsigned int yylno = yyrline_[yyrule];
/* Print the symbols being reduced, and their result. */
*yycdebug_ << _("Reducing stack by rule ") << yyn_ - 1
<< " (" << _("line") << ' ' << yylno << "), ";
*yycdebug_ << "Reducing stack by rule " << yyn_ - 1
<< " (line " << yylno << "), ";
for (]b4_int_type_for([b4_prhs])[ i = yyprhs_[yyn_];
0 <= yyrhs_[i]; ++i)
*yycdebug_ << yyname_[yyrhs_[i]] << ' ';