Clean the error reporting functions.
authorAkim Demaille <akim@epita.fr>
Fri, 31 Mar 2000 13:54:30 +0000 (13:54 +0000)
committerAkim Demaille <akim@epita.fr>
Fri, 31 Mar 2000 13:54:30 +0000 (13:54 +0000)
* src/report.c: New file.
* src/report.h: Likewise.
* src/Makefile.am: Adjust.
* m4/error.m4: New file.
* m4/Makefile.am: Adjust.
* configure.in (jm_PREREQ_ERROR): Call it.
* src/main.c (int_to_string, banner, fatal_banner, warn_banner):
Remove.
(fatal, fatals): Remove.  All callers use complain.c::fatal.
(warn, warni, warns, warnss, warnss): Remove.  All callers use
complain.c::complain.
(toomany): Remove, use fatal instead.
* src/files.c (done): No argument, use complain_message_count.
* src/main.c (main): Register `done' to `atexit'.

* src/getargs.c (usage): More `fputs', less `fprintf'.

24 files changed:
ChangeLog
configure.in
lib/Makefile.am
m4/Makefile.am
m4/error.m4 [new file with mode: 0644]
po/de.po
po/es.po
po/fr.po
po/nl.po
po/ru.po
src/LR0.c
src/Makefile.am
src/complain.c [new file with mode: 0644]
src/complain.h [new file with mode: 0644]
src/files.c
src/files.h
src/getargs.c
src/lalr.c
src/lex.c
src/main.c
src/output.c
src/reader.c
src/reduce.c
src/system.h

index 555795b..040af56 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,24 @@
+2000-03-31  Akim Demaille  <akim@epita.fr>
+
+       Clean the error reporting functions.
+
+       * src/report.c: New file.
+       * src/report.h: Likewise.
+       * src/Makefile.am: Adjust.
+       * m4/error.m4: New file.
+       * m4/Makefile.am: Adjust.
+       * configure.in (jm_PREREQ_ERROR): Call it.
+       * src/main.c (int_to_string, banner, fatal_banner, warn_banner):
+       Remove.
+       (fatal, fatals): Remove.  All callers use complain.c::fatal.
+       (warn, warni, warns, warnss, warnss): Remove.  All callers use
+       complain.c::complain.
+       (toomany): Remove, use fatal instead.
+       * src/files.c (done): No argument, use complain_message_count.
+       * src/main.c (main): Register `done' to `atexit'.
+
+       * src/getargs.c (usage): More `fputs', less `fprintf'.
+
 2000-03-28  Akim Demaille  <akim@epita.fr>
 
        * lib/: New directory.
index d26f29d..fec8f8d 100644 (file)
@@ -36,6 +36,7 @@ AC_CHECK_FUNCS(mkstemp setlocale)
 BISON_NEED_DECLARATIONS(calloc realloc)
 
 AM_GNU_GETTEXT
+jm_PREREQ_ERROR
 
 # This is necessary so that .o files in LIBOBJS are also built via
 # the ANSI2KNR-filtering rules.
index e56419a..9a4e37f 100644 (file)
@@ -7,8 +7,7 @@ noinst_LIBRARIES = libbison.a
 INCLUDES = -I.. -I$(srcdir) -I../intl
 
 libbison_a_SOURCES = getopt.c getopt1.c
+noinst_HEADERS = getopt.h
 
 libbison_a_LIBADD = @LIBOBJS@ @ALLOCA@
 libbison_a_DEPENDENCIES = $(libbison_a_LIBADD)
-
-noinst_HEADERS = getopt.h
index c64417c..3643c69 100644 (file)
@@ -1,2 +1,2 @@
 ## Process this file with automake to produce Makefile.in -*-Makefile-*-
-EXTRA_DIST = bison-decl.m4 gettext.m4 lcmessage.m4 progtest.m4
+EXTRA_DIST = bison-decl.m4 error.m4 gettext.m4 lcmessage.m4 progtest.m4
diff --git a/m4/error.m4 b/m4/error.m4
new file mode 100644 (file)
index 0000000..eb0f776
--- /dev/null
@@ -0,0 +1,11 @@
+#serial 1
+
+dnl FIXME: put these prerequisite-only *.m4 files in a separate
+dnl directory -- otherwise, they'll conflict with existing files.
+
+dnl These are the prerequisite macros for GNU's error.c file.
+AC_DEFUN(jm_PREREQ_ERROR,
+[
+  AC_CHECK_FUNCS(strerror strerror_r vprintf doprnt)
+  AC_HEADER_STDC
+])
index a875269..0210c94 100644 (file)
--- a/po/de.po
+++ b/po/de.po
@@ -5,7 +5,7 @@
 msgid ""
 msgstr ""
 "Project-Id-Version: bison 1.25\n"
-"POT-Creation-Date: 2000-03-28 14:20+0200\n"
+"POT-Creation-Date: 2000-03-31 15:40+0200\n"
 "PO-Revision-Date: 1996-10-10 17:54 MET DST\n"
 "Last-Translator: Ulrich Drepper <drepper@gnu.ai.mit.edu>\n"
 "Language-Team: German <de@li.org>\n"
@@ -13,6 +13,11 @@ msgstr ""
 "Content-Type: text/plain; charset=ISO-8859-1\n"
 "Content-Transfer-Encoding: 8-bit\n"
 
+#: src/LR0.c:377
+#, c-format
+msgid "too many states (max %d)"
+msgstr ""
+
 #: src/allocate.c:59 src/allocate.c:75
 #, c-format
 msgid "%s: memory exhausted\n"
@@ -170,75 +175,67 @@ msgstr ""
 msgid "Report bugs to <bug-bison@gnu.org>.\n"
 msgstr ""
 
-#: src/getargs.c:196
+#: src/getargs.c:195
 #, c-format
 msgid "%s: no grammar file given\n"
 msgstr "%s: keine Grammatik-Datei angegeben\n"
 
-#: src/getargs.c:200
+#: src/getargs.c:199
 #, fuzzy, c-format
 msgid "%s: extra arguments ignored after `%s'\n"
 msgstr "%s: zusätzliche Argumente nach »%s« werden ignoriert\n"
 
-#: src/lalr.c:294
-msgid "gotos"
-msgstr "»goto« Anweisungen"
+#: src/lalr.c:293
+#, c-format
+msgid "too many gotos (max %d)"
+msgstr ""
 
-#: src/lex.c:119
+#: src/lex.c:115
 msgid "unexpected `/' found and ignored"
 msgstr "»/« wird hier nicht erwartet und wird deshalb ignoriert"
 
-#: src/lex.c:148 src/reader.c:258
+#: src/lex.c:144 src/reader.c:248
 msgid "unterminated comment"
 msgstr "unbeendeter Kommentar"
 
-#: src/lex.c:176
-msgid "Unexpected end of file"
+#: src/lex.c:172
+#, fuzzy
+msgid "unexpected end of file"
 msgstr "Datei endet unerwartet"
 
 # Oder soll man den Begriff "Escapezeichen" verwenden?
-#: src/lex.c:197
+#: src/lex.c:193
 msgid "unescaped newline in constant"
 msgstr "nicht maskiertes Zeilenendezeichen in Konstante"
 
-#: src/lex.c:229
+#: src/lex.c:225
 #, c-format
 msgid "octal value outside range 0...255: `\\%o'"
 msgstr "oktaler Zahlenwert außerhalb des Bereichs 0...255: »\\%o«"
 
-#: src/lex.c:253
+#: src/lex.c:250
 #, c-format
 msgid "hexadecimal value above 255: `\\x%x'"
 msgstr "hexadezimaler Zahlenwert größer als 255: »\\x%x«"
 
-#: src/lex.c:263
+#: src/lex.c:261
 #, c-format
 msgid "unknown escape sequence: `\\' followed by `%s'"
 msgstr "unbekanntes Fluchtzeichen: »\\« gefolgt von »%s«"
 
-#: src/lex.c:396
+#: src/lex.c:394
 msgid "use \"...\" for multi-character literal tokens"
 msgstr "für Literal mit mehreren Zeichen bitte \"...\" verwenden"
 
-#: src/lex.c:475
+#: src/lex.c:473
 msgid "unterminated type name at end of file"
 msgstr "unerwarteter Typname am Ende der Datei"
 
-#: src/lex.c:478
+#: src/lex.c:476
 msgid "unterminated type name"
 msgstr "unerwarteter Typname"
 
-#: src/main.c:163
-#, fuzzy
-msgid "fatal error: "
-msgstr "fataler Fehler: %s\n"
-
-#: src/main.c:258
-#, c-format
-msgid "too many %s (max %d)"
-msgstr ""
-
-#: src/main.c:268
+#: src/main.c:137
 #, fuzzy, c-format
 msgid "%s: internal error: %s\n"
 msgstr "interner Fehler, %s\n"
@@ -247,9 +244,9 @@ msgstr "interner Fehler, %s\n"
 msgid "Entering set_nullable"
 msgstr "Führe »set_nullable« aus"
 
-#: src/output.c:1201
-#, c-format
-msgid "maximum table size (%s) exceeded"
+#: src/output.c:1199
+#, fuzzy, c-format
+msgid "maximum table size (%d) exceeded"
 msgstr "maximale Tabellengröße (%s) überschritten"
 
 #: src/print.c:85
@@ -351,236 +348,244 @@ msgstr " auf der linken Seite:"
 msgid " on right:"
 msgstr " auf der rechten Seite:"
 
-#: src/reader.c:163
+#: src/reader.c:154
 msgid "   Skipping to next \\n"
 msgstr "   Überspringe Zeichen bis zum nächsten \\n"
 
-#: src/reader.c:165
+#: src/reader.c:156
 #, c-format
 msgid "   Skipping to next %c"
 msgstr "   Überspringe Zeichen bis zum nächten %c"
 
-#: src/reader.c:189 src/reader.c:204
+#: src/reader.c:180 src/reader.c:195
 msgid "unterminated string at end of file"
 msgstr "unbeendete Zeichenkette am Ende der Datei"
 
-#: src/reader.c:192
+#: src/reader.c:183
 msgid "unterminated string"
 msgstr "unbeendete Zeichenkette"
 
-#: src/reader.c:434
+#: src/reader.c:424
 #, c-format
 msgid "unrecognized: %s"
 msgstr "unbekannt: %s"
 
-#: src/reader.c:439
+#: src/reader.c:429
 msgid "no input grammar"
 msgstr "keine Eingabe-Grammatik"
 
-#: src/reader.c:442
+#: src/reader.c:432
 #, c-format
 msgid "unknown character: %s"
 msgstr "unbekanntes Zeichen: %s"
 
-#: src/reader.c:493
+#: src/reader.c:484
 msgid "unterminated `%{' definition"
 msgstr "unbeendete »%{« Definition"
 
-#: src/reader.c:571 src/reader.c:792
+#: src/reader.c:525 src/reader.c:713 src/reader.c:762
+#, c-format
+msgid "Premature EOF after %s"
+msgstr ""
+
+#: src/reader.c:562 src/reader.c:784
 #, c-format
 msgid "symbol %s redefined"
 msgstr "Symbol %s noch einmal definiert"
 
-#: src/reader.c:581 src/reader.c:737 src/reader.c:799 src/reader.c:1703
+#: src/reader.c:572 src/reader.c:728 src/reader.c:791 src/reader.c:1697
 #, c-format
 msgid "type redeclaration for %s"
 msgstr "erneute Deklaration des Typs für %s"
 
-#: src/reader.c:591
+#: src/reader.c:582
 #, c-format
 msgid "`%s' is invalid in %s"
 msgstr "»%s« ist in %s nicht erlaubt"
 
-#: src/reader.c:639
+#: src/reader.c:630
 #, c-format
 msgid "unrecognized item %s, expected an identifier"
 msgstr "unerwartetes Symbol %s, hier wird ein Bezeichner erwartet"
 
-#: src/reader.c:661
+#: src/reader.c:652
 #, c-format
 msgid "expected string constant instead of %s"
 msgstr "hier wird eine Zeichenkette erwartet, nicht %s"
 
-#: src/reader.c:683
+#: src/reader.c:674
 #, c-format
 msgid "multiple %start declarations"
 msgstr "mehr als eine %start Deklaration"
 
-#: src/reader.c:685
+#: src/reader.c:676
 #, c-format
 msgid "invalid %start declaration"
 msgstr "ungültige %start Deklaration"
 
-#: src/reader.c:705
+#: src/reader.c:696
 msgid "%type declaration has no <typename>"
 msgstr "%type Deklaration hat keinen <Typ-Namen>"
 
-#: src/reader.c:742
-msgid "invalid %%type declaration due to item: `%s'"
+#: src/reader.c:733
+#, fuzzy
+msgid "invalid %%type declaration due to item: %s"
 msgstr "ungültige %%type Deklaration wegen »%s«"
 
-#: src/reader.c:788
+#: src/reader.c:780
 #, c-format
 msgid "redefining precedence of %s"
 msgstr "Stellenwertigkeit von %s wird erneut definiert"
 
-#: src/reader.c:811
+#: src/reader.c:803
 #, c-format
 msgid "invalid text (%s) - number should be after identifier"
 msgstr "unzulässiger Text (%s) - Nummer sollte nach Bezeichner kommen"
 
-#: src/reader.c:821
+#: src/reader.c:813
 #, c-format
 msgid "unexpected item: %s"
 msgstr "unerwartetes Symbol: %s"
 
-#: src/reader.c:845
+#: src/reader.c:837
 #, c-format
 msgid "multiple %union declarations"
 msgstr "erneute %union Definition"
 
-#: src/reader.c:903
+#: src/reader.c:895
 msgid "unterminated comment at end of file"
 msgstr "unbeendeter Kommentar am Dateiende"
 
-#: src/reader.c:929
+#: src/reader.c:921
 msgid "unmatched close-brace (`}')"
 msgstr "schließende geschweifte Klammer (»}«) hat kein Gegenstück"
 
-#: src/reader.c:973
+#: src/reader.c:965
 #, c-format
 msgid "argument of %expect is not an integer"
 msgstr "Argument von %expect ist keine ganze Zahl"
 
-#: src/reader.c:1005
+#: src/reader.c:997
 #, c-format
 msgid "@%s is invalid"
 msgstr "@%s ist unzulässig"
 
-#: src/reader.c:1014
+#: src/reader.c:1012 src/reader.c:1024
 msgid "invalid $ value"
 msgstr "unzulässiger $ Wert"
 
-#: src/reader.c:1092
+#: src/reader.c:1083
 msgid "unmatched right brace (`}')"
 msgstr "schließende geschweifte Klammer (»}«) hat kein Gegenstück"
 
-#: src/reader.c:1139 src/reader.c:1277
+#: src/reader.c:1130 src/reader.c:1270
 #, c-format
 msgid "$$ of `%s' has no declared type"
 msgstr "$$ von »%s« hat keine deklarierten Wert"
 
-#: src/reader.c:1154 src/reader.c:1293
-#, c-format
-msgid "$%s of `%s' has no declared type"
+#: src/reader.c:1146 src/reader.c:1286
+#, fuzzy, c-format
+msgid "$%d of `%s' has no declared type"
 msgstr "»%s« von »%s« hat keine deklarierten Wert"
 
-#: src/reader.c:1159 src/reader.c:1298
+#: src/reader.c:1151 src/reader.c:1291
 #, c-format
 msgid "$%s is invalid"
 msgstr "$%s ist unzulässig"
 
-#: src/reader.c:1167
-msgid "unterminated %%guard clause"
+#: src/reader.c:1160
+#, fuzzy, c-format
+msgid "unterminated %guard clause"
 msgstr "unbeendeter %%guard Fall"
 
-#: src/reader.c:1307
+#: src/reader.c:1300
 msgid "unmatched `{'"
 msgstr "»{« hat kein Gegenstück"
 
-#: src/reader.c:1393
+#: src/reader.c:1386
 msgid "ill-formed rule: initial symbol not followed by colon"
 msgstr ""
 "falsch geformte Regel: führendes Symbol wird nicht von einem Semikolon "
 "gefolgt"
 
-#: src/reader.c:1400
+#: src/reader.c:1393
 msgid "grammar starts with vertical bar"
 msgstr "Grammatik fängt mit einem vertikalen Strich (»|«) an"
 
-#: src/reader.c:1431
+#: src/reader.c:1424
 #, c-format
 msgid "rule given for %s, which is a token"
 msgstr "Regel für %s vorhanden, welches aber ein Token ist"
 
-#: src/reader.c:1529
+#: src/reader.c:1522
 msgid "two @prec's in a row"
 msgstr "zwei @prec Anweisungen nacheinander"
 
-#: src/reader.c:1537
-msgid "%%guard present but %%semantic_parser not specified"
+#: src/reader.c:1531
+#, fuzzy, c-format
+msgid "%guard present but %semantic_parser not specified"
 msgstr ""
 "%%guard Anweisung vorhanden, jedoch wird %%semantic_parser nicht angegeben"
 
-#: src/reader.c:1546
+#: src/reader.c:1540
 msgid "two actions at end of one rule"
 msgstr "Zwei Aktionen am Ende einer Regel"
 
-#: src/reader.c:1561
+#: src/reader.c:1555
 #, c-format
 msgid "type clash (`%s' `%s') on default action"
 msgstr "Typkonflikt (»%s« »%s«) bei Default Aktion"
 
-#: src/reader.c:1567
+#: src/reader.c:1561
 msgid "empty rule for typed nonterminal, and no action"
 msgstr "leere Regel für Nicht-Terminal vmit Typ und keine Aktion"
 
-#: src/reader.c:1611
+#: src/reader.c:1605
 #, c-format
 msgid "invalid input: %s"
 msgstr "ungültige Eingabe: %s"
 
-#: src/reader.c:1619
-#, c-format
-msgid "too many symbols (tokens plus nonterminals); maximum %s"
+#: src/reader.c:1613
+#, fuzzy, c-format
+msgid "too many symbols (tokens plus nonterminals); maximum %d"
 msgstr "zu viele Symbols (Token plus Nicht-Terminal); Maximum %s"
 
-#: src/reader.c:1622
+#: src/reader.c:1616
 msgid "no rules in the input grammar"
 msgstr "Eingabegrammatik enthält keine Regeln"
 
-#: src/reader.c:1640
+#: src/reader.c:1634
 #, c-format
 msgid "symbol %s is used, but is not defined as a token and has no rules"
 msgstr ""
 "Symbol %s wird benutzt, ist aber nicht als Token definiert und hat keine "
 "Regel"
 
-#: src/reader.c:1679
+#: src/reader.c:1673
 msgid "ill-formed %type declaration"
 msgstr "falsch geformte %type Deklaration"
 
-#: src/reader.c:1758
+#: src/reader.c:1752
 #, c-format
 msgid "conflicting precedences for %s and %s"
 msgstr "Vorrangwertigkeiten für %s und %s widersprechen sich"
 
-#: src/reader.c:1770
+#: src/reader.c:1764
 #, c-format
 msgid "conflicting assoc values for %s and %s"
 msgstr "assoc Werte für %s nd %s widersprechen sich"
 
-#: src/reader.c:1821
-#, c-format
-msgid "tokens %s and %s both assigned number %s"
+#: src/reader.c:1815
+#, fuzzy, c-format
+msgid "tokens %s and %s both assigned number %d"
 msgstr "Token %s und %s haben die selbe nummer %s"
 
-#: src/reader.c:1835
+#: src/reader.c:1829
 #, c-format
 msgid "the start symbol %s is undefined"
 msgstr "das Startsymbol %s ist undefiniert"
 
-#: src/reader.c:1837
+#: src/reader.c:1831
 #, c-format
 msgid "the start symbol %s is a token"
 msgstr "das Startsymbol %s ist ein Token"
@@ -688,65 +693,72 @@ msgstr " und "
 msgid "%d useless rule%s"
 msgstr "%d ungenutzte Regel"
 
-#: src/getopt.c:675
+#: lib/getopt.c:675
 #, c-format
 msgid "%s: option `%s' is ambiguous\n"
 msgstr "%s: die Option »%s« ist nicht eindeutig\n"
 
-#: src/getopt.c:700
+#: lib/getopt.c:700
 #, c-format
 msgid "%s: option `--%s' doesn't allow an argument\n"
 msgstr "%s: die Option »--%s« erlaubt kein Argument\n"
 
-#: src/getopt.c:705
+#: lib/getopt.c:705
 #, c-format
 msgid "%s: option `%c%s' doesn't allow an argument\n"
 msgstr "%s: die Option »%c%s« erlaubt kein Argument\n"
 
-#: src/getopt.c:723 src/getopt.c:896
+#: lib/getopt.c:723 lib/getopt.c:896
 #, c-format
 msgid "%s: option `%s' requires an argument\n"
 msgstr "%s: die Option »%s« erfordert ein Argument\n"
 
 #. --option
-#: src/getopt.c:752
+#: lib/getopt.c:752
 #, c-format
 msgid "%s: unrecognized option `--%s'\n"
 msgstr "%s: unbekannte Option »--%s«\n"
 
 #. +option or -option
-#: src/getopt.c:756
+#: lib/getopt.c:756
 #, c-format
 msgid "%s: unrecognized option `%c%s'\n"
 msgstr "%s: unbekannte Option »%c%s«\n"
 
 #. 1003.2 specifies the format of this message.
-#: src/getopt.c:782
+#: lib/getopt.c:782
 #, c-format
 msgid "%s: illegal option -- %c\n"
 msgstr "%s: die Option ist nicht erlaubt -- %c\n"
 
-#: src/getopt.c:785
+#: lib/getopt.c:785
 #, c-format
 msgid "%s: invalid option -- %c\n"
 msgstr "%s: ungültige Option -- %c\n"
 
 #. 1003.2 specifies the format of this message.
-#: src/getopt.c:815 src/getopt.c:945
+#: lib/getopt.c:815 lib/getopt.c:945
 #, c-format
 msgid "%s: option requires an argument -- %c\n"
 msgstr "%s: die Option benötigt ein Argument -- %c\n"
 
-#: src/getopt.c:862
+#: lib/getopt.c:862
 #, fuzzy, c-format
 msgid "%s: option `-W %s' is ambiguous\n"
 msgstr "%s: die Option »%s« ist nicht eindeutig\n"
 
-#: src/getopt.c:880
+#: lib/getopt.c:880
 #, fuzzy, c-format
 msgid "%s: option `-W %s' doesn't allow an argument\n"
 msgstr "%s: die Option »--%s« erlaubt kein Argument\n"
 
+#~ msgid "gotos"
+#~ msgstr "»goto« Anweisungen"
+
+#, fuzzy
+#~ msgid "fatal error: "
+#~ msgstr "fataler Fehler: %s\n"
+
 #, fuzzy
 #~ msgid ""
 #~ "Usage: %s [-dhklntvyV] [-b file-prefix] [-o outfile] [-p name-prefix]\n"
index 05f26be..5449a00 100644 (file)
--- a/po/es.po
+++ b/po/es.po
@@ -30,7 +30,7 @@
 msgid ""
 msgstr ""
 "Project-Id-Version: GNU bison 1.25\n"
-"POT-Creation-Date: 2000-03-28 14:20+0200\n"
+"POT-Creation-Date: 2000-03-31 15:40+0200\n"
 "PO-Revision-Date: 1998-09-21 10:19+0200\n"
 "Last-Translator: Nicolás García-Pedrajas <ngarcia-pedrajas@acm.org>\n"
 "Language-Team: Spanish <es@li.org>\n"
@@ -38,6 +38,11 @@ msgstr ""
 "Content-Type: text/plain; charset=ISO-8859-1\n"
 "Content-Transfer-Encoding: 8-bit\n"
 
+#: src/LR0.c:377
+#, c-format
+msgid "too many states (max %d)"
+msgstr ""
+
 #: src/allocate.c:59 src/allocate.c:75
 #, c-format
 msgid "%s: memory exhausted\n"
@@ -227,94 +232,70 @@ msgstr ""
 
 # Me parece menos "computadora" decir "ningún fichero de gramática" - cll
 #
-#: src/getargs.c:196
+#: src/getargs.c:195
 #, c-format
 msgid "%s: no grammar file given\n"
 msgstr "%s: no se ha especificado ningún fichero de gramática\n"
 
 # Ignorar es no saber, to ignore es no hacer caso, que no es lo mismo. sv
-#: src/getargs.c:200
+#: src/getargs.c:199
 #, fuzzy, c-format
 msgid "%s: extra arguments ignored after `%s'\n"
 msgstr "%s: los argumentos extra después de '%s' no se tendrán en cuenta\n"
 
-# Duda: desconozco en qué caso se emplea esto. Estúdialo bien y
-# comprueba que realmente es necesario emplear una palabra no
-# española. Recuerda que el acuerdo que existe en la lista de correo en
-# español es, en el peor de los casos, poner algo en español y luego en
-# inglés a modo de recordatorio. Por ejemplo: "tubería (pipe)" - cll
-#
-# miré el código, lo que indica es el número de gotos del código
-# ngp
-#
-#: src/lalr.c:294
-msgid "gotos"
-msgstr "saltos (gotos)"
+#: src/lalr.c:293
+#, c-format
+msgid "too many gotos (max %d)"
+msgstr ""
 
 # to ignore no es ignorar. Pon otra cosa, please. sv
-#: src/lex.c:119
+#: src/lex.c:115
 msgid "unexpected `/' found and ignored"
 msgstr "se ha encontrado `/' cuando no se esperaba, no se tendrán en cuenta"
 
-#: src/lex.c:148 src/reader.c:258
+#: src/lex.c:144 src/reader.c:248
 msgid "unterminated comment"
 msgstr "comentario sin terminar"
 
-#: src/lex.c:176
-msgid "Unexpected end of file"
+#: src/lex.c:172
+#, fuzzy
+msgid "unexpected end of file"
 msgstr "Fin de fichero inesperado"
 
 # ¿unescaped?
-#: src/lex.c:197
+#: src/lex.c:193
 msgid "unescaped newline in constant"
 msgstr "salto de línea en constante sin secuencia de escape"
 
-#: src/lex.c:229
+#: src/lex.c:225
 #, c-format
 msgid "octal value outside range 0...255: `\\%o'"
 msgstr "valor octal fuera del rango 0...255: `\\%o'"
 
-#: src/lex.c:253
+#: src/lex.c:250
 #, c-format
 msgid "hexadecimal value above 255: `\\x%x'"
 msgstr "valor hexadecimal mayor que 255: `\\x%x'"
 
-#: src/lex.c:263
+#: src/lex.c:261
 #, c-format
 msgid "unknown escape sequence: `\\' followed by `%s'"
 msgstr "secuencia de escape desconocida: `\\' seguido de `%s'"
 
 # ¿multicarácter o multicaracteres? sv
-#: src/lex.c:396
+#: src/lex.c:394
 msgid "use \"...\" for multi-character literal tokens"
 msgstr "use \"...\" para terminales literales multicarácter"
 
-#: src/lex.c:475
+#: src/lex.c:473
 msgid "unterminated type name at end of file"
 msgstr "nombre de tipo sin terminar al final del fichero"
 
-#: src/lex.c:478
+#: src/lex.c:476
 msgid "unterminated type name"
 msgstr "nombre de tipo sin terminar"
 
-# Duda: desconozco cuál será el convenio en la lista de correo a
-# propósito de "fatal". Por favor, comprueba que "error grave" es
-# preferido por todos los miembros a "error fatal" - cll
-# veremos que dice la mayoría, como hay otros 2 revisores
-# La verdad es que a mi lo de error fatal me suena fatal
-# ngp
-#
-#: src/main.c:163
-#, fuzzy
-msgid "fatal error: "
-msgstr "error grave: %s\n"
-
-#: src/main.c:258
-#, c-format
-msgid "too many %s (max %d)"
-msgstr ""
-
-#: src/main.c:268
+#: src/main.c:137
 #, fuzzy, c-format
 msgid "%s: internal error: %s\n"
 msgstr "error interno, %s\n"
@@ -328,9 +309,9 @@ msgstr "Entrando set_nullable"
 # en inglés era así, pero quizás en español sea mejor como dices
 # ngp
 #
-#: src/output.c:1201
-#, c-format
-msgid "maximum table size (%s) exceeded"
+#: src/output.c:1199
+#, fuzzy, c-format
+msgid "maximum table size (%d) exceeded"
 msgstr "excedido el tamaño máximo de la tabla (%s)"
 
 #: src/print.c:85
@@ -436,52 +417,57 @@ msgstr " en la izquierda:"
 msgid " on right:"
 msgstr " en la derecha:"
 
-#: src/reader.c:163
+#: src/reader.c:154
 msgid "   Skipping to next \\n"
 msgstr "   Saltando al siguiente \\n"
 
-#: src/reader.c:165
+#: src/reader.c:156
 #, c-format
 msgid "   Skipping to next %c"
 msgstr "   Saltando al siguiente %c"
 
-#: src/reader.c:189 src/reader.c:204
+#: src/reader.c:180 src/reader.c:195
 msgid "unterminated string at end of file"
 msgstr "cadena sin terminar al final del fichero"
 
-#: src/reader.c:192
+#: src/reader.c:183
 msgid "unterminated string"
 msgstr "cadena sin terminar"
 
-#: src/reader.c:434
+#: src/reader.c:424
 #, c-format
 msgid "unrecognized: %s"
 msgstr "no reconocido: %s"
 
-#: src/reader.c:439
+#: src/reader.c:429
 msgid "no input grammar"
 msgstr "no hay gramática de entrada"
 
-#: src/reader.c:442
+#: src/reader.c:432
 #, c-format
 msgid "unknown character: %s"
 msgstr "carácter desconocido: %s"
 
-#: src/reader.c:493
+#: src/reader.c:484
 msgid "unterminated `%{' definition"
 msgstr "definición `%{' sin terminar"
 
-#: src/reader.c:571 src/reader.c:792
+#: src/reader.c:525 src/reader.c:713 src/reader.c:762
+#, c-format
+msgid "Premature EOF after %s"
+msgstr ""
+
+#: src/reader.c:562 src/reader.c:784
 #, c-format
 msgid "symbol %s redefined"
 msgstr "redefinido el símbolo %s"
 
-#: src/reader.c:581 src/reader.c:737 src/reader.c:799 src/reader.c:1703
+#: src/reader.c:572 src/reader.c:728 src/reader.c:791 src/reader.c:1697
 #, c-format
 msgid "type redeclaration for %s"
 msgstr "redeclaración del tipo de %s"
 
-#: src/reader.c:591
+#: src/reader.c:582
 #, c-format
 msgid "`%s' is invalid in %s"
 msgstr "`%s' no es válido en %s"
@@ -492,35 +478,36 @@ msgstr "`%s' no es v
 # - cll
 # ok - ngp
 #
-#: src/reader.c:639
+#: src/reader.c:630
 #, c-format
 msgid "unrecognized item %s, expected an identifier"
 msgstr "no se reconoce el ítem %s, se esperaba un identificador"
 
-#: src/reader.c:661
+#: src/reader.c:652
 #, c-format
 msgid "expected string constant instead of %s"
 msgstr "se esperaba una cadena constante en lugar de %s"
 
-#: src/reader.c:683
+#: src/reader.c:674
 #, c-format
 msgid "multiple %start declarations"
 msgstr "múltiples declaraciones de %start"
 
-#: src/reader.c:685
+#: src/reader.c:676
 #, c-format
 msgid "invalid %start declaration"
 msgstr "declaración de %start no válida"
 
-#: src/reader.c:705
+#: src/reader.c:696
 msgid "%type declaration has no <typename>"
 msgstr "la declaración %type no tiene <nombre-tipo>"
 
-#: src/reader.c:742
-msgid "invalid %%type declaration due to item: `%s'"
+#: src/reader.c:733
+#, fuzzy
+msgid "invalid %%type declaration due to item: %s"
 msgstr "declaración de %%type no válida debido al ítem: `%s'"
 
-#: src/reader.c:788
+#: src/reader.c:780
 #, c-format
 msgid "redefining precedence of %s"
 msgstr "redefinición de la precedencia de %s"
@@ -529,7 +516,7 @@ msgstr "redefinici
 # de "to must" y aquí se emplea en su forma condicional. Por eso, he
 # cambiado `debe' por `debería' - cll
 # ahí me has pillado en un olvido del inglés - ngp
-#: src/reader.c:811
+#: src/reader.c:803
 #, c-format
 msgid "invalid text (%s) - number should be after identifier"
 msgstr ""
@@ -539,53 +526,53 @@ msgstr ""
 # otras, como `inesperado'. Cualquiera es correcta, por supuesto y, en
 # este caso, la segunda me parece más apropiada - cll
 # ok - ngp
-#: src/reader.c:821
+#: src/reader.c:813
 #, c-format
 msgid "unexpected item: %s"
 msgstr "ítem inesperado: %s"
 
-#: src/reader.c:845
+#: src/reader.c:837
 #, c-format
 msgid "multiple %union declarations"
 msgstr "declaraciones múltiples de %union"
 
-#: src/reader.c:903
+#: src/reader.c:895
 msgid "unterminated comment at end of file"
 msgstr "comentario sin terminar al final del fichero"
 
-#: src/reader.c:929
+#: src/reader.c:921
 msgid "unmatched close-brace (`}')"
 msgstr "llave de cierre (`}') desemparejada"
 
-#: src/reader.c:973
+#: src/reader.c:965
 #, c-format
 msgid "argument of %expect is not an integer"
 msgstr "el argumento de %expect no es un entero"
 
-#: src/reader.c:1005
+#: src/reader.c:997
 #, c-format
 msgid "@%s is invalid"
 msgstr "@%s no es válido"
 
-#: src/reader.c:1014
+#: src/reader.c:1012 src/reader.c:1024
 msgid "invalid $ value"
 msgstr "valor $ no válido"
 
-#: src/reader.c:1092
+#: src/reader.c:1083
 msgid "unmatched right brace (`}')"
 msgstr "llave derecha (`}') desemparejada"
 
-#: src/reader.c:1139 src/reader.c:1277
+#: src/reader.c:1130 src/reader.c:1270
 #, c-format
 msgid "$$ of `%s' has no declared type"
 msgstr "$$ de `%s' no tiene tipo declarado"
 
-#: src/reader.c:1154 src/reader.c:1293
-#, c-format
-msgid "$%s of `%s' has no declared type"
+#: src/reader.c:1146 src/reader.c:1286
+#, fuzzy, c-format
+msgid "$%d of `%s' has no declared type"
 msgstr "$%s de `%s' no tiene tipo declarado"
 
-#: src/reader.c:1159 src/reader.c:1298
+#: src/reader.c:1151 src/reader.c:1291
 #, c-format
 msgid "$%s is invalid"
 msgstr "$%s no es válida"
@@ -594,100 +581,102 @@ msgstr "$%s no es v
 # mejor que `sin terminar' que me parece más "computerizado" - cll
 # quizás un poco cacofónico lo de claúsula inconclusa - ngp
 #
-#: src/reader.c:1167
-msgid "unterminated %%guard clause"
+#: src/reader.c:1160
+#, fuzzy, c-format
+msgid "unterminated %guard clause"
 msgstr "cláusula %%guard sin terminar"
 
 # Cambio el orden y el sexo. Ahora está "en español". sv
-#: src/reader.c:1307
+#: src/reader.c:1300
 msgid "unmatched `{'"
 msgstr "`{' desemparejada"
 
-#: src/reader.c:1393
+#: src/reader.c:1386
 msgid "ill-formed rule: initial symbol not followed by colon"
 msgstr "regla mal formada: el símbolo inicial no está seguido por :"
 
-#: src/reader.c:1400
+#: src/reader.c:1393
 msgid "grammar starts with vertical bar"
 msgstr "la gramática comienza con una barra vertical"
 
-#: src/reader.c:1431
+#: src/reader.c:1424
 #, c-format
 msgid "rule given for %s, which is a token"
 msgstr "se ha dado una regla para %s, que es un terminal"
 
-#: src/reader.c:1529
+#: src/reader.c:1522
 msgid "two @prec's in a row"
 msgstr "dos @prec en una línea"
 
 # Insisto, el empleo de participios a secas me parece como hablar en
 # indio. Por favor, permíteme que añada un "está" :) - cll
 # ok - ngp
-#: src/reader.c:1537
-msgid "%%guard present but %%semantic_parser not specified"
+#: src/reader.c:1531
+#, fuzzy, c-format
+msgid "%guard present but %semantic_parser not specified"
 msgstr "%%guard presente pero %%semantic_parser está sin especificar"
 
-#: src/reader.c:1546
+#: src/reader.c:1540
 msgid "two actions at end of one rule"
 msgstr "dos acciones al final de una regla"
 
-#: src/reader.c:1561
+#: src/reader.c:1555
 #, c-format
 msgid "type clash (`%s' `%s') on default action"
 msgstr "los tipos (`%s' `%s') no concuerdan en la acción por defecto"
 
-#: src/reader.c:1567
+#: src/reader.c:1561
 msgid "empty rule for typed nonterminal, and no action"
 msgstr "regla vacía para un no terminal con tipo y no hay ninguna acción"
 
-#: src/reader.c:1611
+#: src/reader.c:1605
 #, c-format
 msgid "invalid input: %s"
 msgstr "entrada no válida: %s"
 
-#: src/reader.c:1619
-#, c-format
-msgid "too many symbols (tokens plus nonterminals); maximum %s"
+#: src/reader.c:1613
+#, fuzzy, c-format
+msgid "too many symbols (tokens plus nonterminals); maximum %d"
 msgstr "demasiados símbolos (terminales y no terminales); máximo %s"
 
-#: src/reader.c:1622
+#: src/reader.c:1616
 msgid "no rules in the input grammar"
 msgstr "no hay reglas en la gramática de entrada"
 
 # `token' se debe traducir como `literal' - cll
 # en terminología de compiladores token es más un terminal - ngp
 #
-#: src/reader.c:1640
+#: src/reader.c:1634
 #, c-format
 msgid "symbol %s is used, but is not defined as a token and has no rules"
 msgstr ""
 "se usa el símbolo %s, pero no está definido como terminal y no tiene reglas"
 
-#: src/reader.c:1679
+#: src/reader.c:1673
 msgid "ill-formed %type declaration"
 msgstr "declaración %type incorrectamente formada"
 
-#: src/reader.c:1758
+#: src/reader.c:1752
 #, c-format
 msgid "conflicting precedences for %s and %s"
 msgstr "precedencias en conflicto entre %s y %s"
 
-#: src/reader.c:1770
+#: src/reader.c:1764
 #, c-format
 msgid "conflicting assoc values for %s and %s"
 msgstr "conflicto de valores assoc para %s y %s"
 
-#: src/reader.c:1821
-#, c-format
-msgid "tokens %s and %s both assigned number %s"
+#: src/reader.c:1815
+#, fuzzy, c-format
+msgid "tokens %s and %s both assigned number %d"
 msgstr "los terminales %s y %s tienen asignados ambos el número %s"
 
-#: src/reader.c:1835
+#: src/reader.c:1829
 #, c-format
 msgid "the start symbol %s is undefined"
 msgstr "el símbolo de inicio (axioma) %s no está definido"
 
-#: src/reader.c:1837
+#: src/reader.c:1831
 #, c-format
 msgid "the start symbol %s is a token"
 msgstr "el símbolo de inicio (axioma) %s es un terminal"
@@ -807,35 +796,35 @@ msgstr " y "
 msgid "%d useless rule%s"
 msgstr "%d regla%s sin uso"
 
-#: src/getopt.c:675
+#: lib/getopt.c:675
 #, c-format
 msgid "%s: option `%s' is ambiguous\n"
 msgstr "%s: la opción `%s' es ambigua\n"
 
 # Pongo esto como en otros .po. sv
-#: src/getopt.c:700
+#: lib/getopt.c:700
 #, c-format
 msgid "%s: option `--%s' doesn't allow an argument\n"
 msgstr "%s: la opción `--%s' no admite ningún argumento\n"
 
-#: src/getopt.c:705
+#: lib/getopt.c:705
 #, c-format
 msgid "%s: option `%c%s' doesn't allow an argument\n"
 msgstr "%s: la opción `%c%s' no admite ningún argumento\n"
 
-#: src/getopt.c:723 src/getopt.c:896
+#: lib/getopt.c:723 lib/getopt.c:896
 #, c-format
 msgid "%s: option `%s' requires an argument\n"
 msgstr "%s: la opción `%s' requiere un argumento\n"
 
 #. --option
-#: src/getopt.c:752
+#: lib/getopt.c:752
 #, c-format
 msgid "%s: unrecognized option `--%s'\n"
 msgstr "%s: opción `--%s' no reconocida\n"
 
 #. +option or -option
-#: src/getopt.c:756
+#: lib/getopt.c:756
 #, c-format
 msgid "%s: unrecognized option `%c%s'\n"
 msgstr "%s: opción `%c%s' no reconocida\n"
@@ -858,7 +847,7 @@ msgstr "%s: opci
 # a la cárcel (como mucho se cuelgan, je, je, 0ff0 :-). sv
 #
 #. 1003.2 specifies the format of this message.
-#: src/getopt.c:782
+#: lib/getopt.c:782
 #, c-format
 msgid "%s: illegal option -- %c\n"
 msgstr "%s: opción -- %c ilegal\n"
@@ -868,28 +857,51 @@ msgstr "%s: opci
 # Porque Enrique decía que le recordaba a disminuidos físicos.
 # Francamente, no creo que haya que andar con estas "fobias".
 # Pongo inválida. sv
-#: src/getopt.c:785
+#: lib/getopt.c:785
 #, c-format
 msgid "%s: invalid option -- %c\n"
 msgstr "%s: opción -- %c inválida\n"
 
 #. 1003.2 specifies the format of this message.
-#: src/getopt.c:815 src/getopt.c:945
+#: lib/getopt.c:815 lib/getopt.c:945
 #, c-format
 msgid "%s: option requires an argument -- %c\n"
 msgstr "%s: la opción -- %c requiere un argumento\n"
 
-#: src/getopt.c:862
+#: lib/getopt.c:862
 #, fuzzy, c-format
 msgid "%s: option `-W %s' is ambiguous\n"
 msgstr "%s: la opción `%s' es ambigua\n"
 
 # Pongo esto como en otros .po. sv
-#: src/getopt.c:880
+#: lib/getopt.c:880
 #, fuzzy, c-format
 msgid "%s: option `-W %s' doesn't allow an argument\n"
 msgstr "%s: la opción `--%s' no admite ningún argumento\n"
 
+# Duda: desconozco en qué caso se emplea esto. Estúdialo bien y
+# comprueba que realmente es necesario emplear una palabra no
+# española. Recuerda que el acuerdo que existe en la lista de correo en
+# español es, en el peor de los casos, poner algo en español y luego en
+# inglés a modo de recordatorio. Por ejemplo: "tubería (pipe)" - cll
+#
+# miré el código, lo que indica es el número de gotos del código
+# ngp
+#
+#~ msgid "gotos"
+#~ msgstr "saltos (gotos)"
+
+# Duda: desconozco cuál será el convenio en la lista de correo a
+# propósito de "fatal". Por favor, comprueba que "error grave" es
+# preferido por todos los miembros a "error fatal" - cll
+# veremos que dice la mayoría, como hay otros 2 revisores
+# La verdad es que a mi lo de error fatal me suena fatal
+# ngp
+#
+#, fuzzy
+#~ msgid "fatal error: "
+#~ msgstr "error grave: %s\n"
+
 # ¿Por qué no lo pones en mayúsculas? Al fin y al cabo, eso es lo que
 # haces luego con "FDERIVES" que traduces como "FDERIVACIONES", ... -
 # cll
index 0c432a2..6e73dd6 100644 (file)
--- a/po/fr.po
+++ b/po/fr.po
@@ -5,7 +5,7 @@
 msgid ""
 msgstr ""
 "Project-Id-Version: bison 1.25\n"
-"POT-Creation-Date: 2000-03-28 14:20+0200\n"
+"POT-Creation-Date: 2000-03-31 15:40+0200\n"
 "PO-Revision-Date: 1996-03-19 20:05 EST\n"
 "Last-Translator: Dominique Boucher <boucherd@IRO.UMontreal.CA>\n"
 "Language-Team: French <fr@li.org>\n"
@@ -13,6 +13,11 @@ msgstr ""
 "Content-Type: text/plain; charset=ISO-8859-1\n"
 "Content-Transfer-Encoding: 8-bit\n"
 
+#: src/LR0.c:377
+#, c-format
+msgid "too many states (max %d)"
+msgstr ""
+
 #: src/allocate.c:59 src/allocate.c:75
 #, c-format
 msgid "%s: memory exhausted\n"
@@ -176,74 +181,66 @@ msgstr ""
 msgid "Report bugs to <bug-bison@gnu.org>.\n"
 msgstr ""
 
-#: src/getargs.c:196
+#: src/getargs.c:195
 #, c-format
 msgid "%s: no grammar file given\n"
 msgstr "%s: grammaire manquante\n"
 
-#: src/getargs.c:200
+#: src/getargs.c:199
 #, fuzzy, c-format
 msgid "%s: extra arguments ignored after `%s'\n"
 msgstr "%s: paramètres supplémentaires ignorés après «%s»\n"
 
-#: src/lalr.c:294
-msgid "gotos"
-msgstr "gotos"
+#: src/lalr.c:293
+#, c-format
+msgid "too many gotos (max %d)"
+msgstr ""
 
-#: src/lex.c:119
+#: src/lex.c:115
 msgid "unexpected `/' found and ignored"
 msgstr "`/' inattendu et ignoré"
 
-#: src/lex.c:148 src/reader.c:258
+#: src/lex.c:144 src/reader.c:248
 msgid "unterminated comment"
 msgstr "le commentaire ne se termine pas"
 
-#: src/lex.c:176
-msgid "Unexpected end of file"
+#: src/lex.c:172
+#, fuzzy
+msgid "unexpected end of file"
 msgstr "Fin de fichier inattendue"
 
-#: src/lex.c:197
+#: src/lex.c:193
 msgid "unescaped newline in constant"
 msgstr "retour de chariot sans échappement dans une constante"
 
-#: src/lex.c:229
+#: src/lex.c:225
 #, c-format
 msgid "octal value outside range 0...255: `\\%o'"
 msgstr "valeur octale à l'extérieur de l'intervalle 0...255: \\%o"
 
-#: src/lex.c:253
+#: src/lex.c:250
 #, c-format
 msgid "hexadecimal value above 255: `\\x%x'"
 msgstr "valeur hexadécimale supérieure à 255: \\x%x"
 
-#: src/lex.c:263
+#: src/lex.c:261
 #, c-format
 msgid "unknown escape sequence: `\\' followed by `%s'"
 msgstr "séquence d'échappement inconnue: `\\' suivie de `%s'"
 
-#: src/lex.c:396
+#: src/lex.c:394
 msgid "use \"...\" for multi-character literal tokens"
 msgstr "utilisez \"...\" pour les terminaux litéraux de plusieurs caractères"
 
-#: src/lex.c:475
+#: src/lex.c:473
 msgid "unterminated type name at end of file"
 msgstr "le nom de type ne se termine pas avant la fin de fichier"
 
-#: src/lex.c:478
+#: src/lex.c:476
 msgid "unterminated type name"
 msgstr "le nom de type ne se termine pas"
 
-#: src/main.c:163
-#, fuzzy
-msgid "fatal error: "
-msgstr "erreur fatale: %s\n"
-
-#: src/main.c:258
-#, c-format
-msgid "too many %s (max %d)"
-msgstr ""
-
-#: src/main.c:268
+#: src/main.c:137
 #, fuzzy, c-format
 msgid "%s: internal error: %s\n"
 msgstr "erreur interne, %s\n"
@@ -252,9 +249,9 @@ msgstr "erreur interne, %s\n"
 msgid "Entering set_nullable"
 msgstr "Entré dans set_nullable"
 
-#: src/output.c:1201
-#, c-format
-msgid "maximum table size (%s) exceeded"
+#: src/output.c:1199
+#, fuzzy, c-format
+msgid "maximum table size (%d) exceeded"
 msgstr "taille maximum des tables (%s) dépassée"
 
 #: src/print.c:85
@@ -356,234 +353,242 @@ msgstr " 
 msgid " on right:"
 msgstr " à droite:"
 
-#: src/reader.c:163
+#: src/reader.c:154
 msgid "   Skipping to next \\n"
 msgstr "   Saut jusqu'au prochain \\n"
 
-#: src/reader.c:165
+#: src/reader.c:156
 #, c-format
 msgid "   Skipping to next %c"
 msgstr "   Saut jusqu'au prochain %c"
 
-#: src/reader.c:189 src/reader.c:204
+#: src/reader.c:180 src/reader.c:195
 msgid "unterminated string at end of file"
 msgstr "chaîne de caractères non terminée en fin de fichier"
 
-#: src/reader.c:192
+#: src/reader.c:183
 msgid "unterminated string"
 msgstr "chaîne de caractère non terminée"
 
-#: src/reader.c:434
+#: src/reader.c:424
 #, c-format
 msgid "unrecognized: %s"
 msgstr "non reconnu: %s"
 
-#: src/reader.c:439
+#: src/reader.c:429
 msgid "no input grammar"
 msgstr "aucune grammaire en entrée"
 
-#: src/reader.c:442
+#: src/reader.c:432
 #, c-format
 msgid "unknown character: %s"
 msgstr "caractère inconnu: %s"
 
-#: src/reader.c:493
+#: src/reader.c:484
 msgid "unterminated `%{' definition"
 msgstr "La section de définition (%{) ne termine pas avant la fin du fichier"
 
-#: src/reader.c:571 src/reader.c:792
+#: src/reader.c:525 src/reader.c:713 src/reader.c:762
+#, c-format
+msgid "Premature EOF after %s"
+msgstr ""
+
+#: src/reader.c:562 src/reader.c:784
 #, c-format
 msgid "symbol %s redefined"
 msgstr "symbole %s redéfini"
 
-#: src/reader.c:581 src/reader.c:737 src/reader.c:799 src/reader.c:1703
+#: src/reader.c:572 src/reader.c:728 src/reader.c:791 src/reader.c:1697
 #, c-format
 msgid "type redeclaration for %s"
 msgstr "redéclaration du type de %s"
 
-#: src/reader.c:591
+#: src/reader.c:582
 #, c-format
 msgid "`%s' is invalid in %s"
 msgstr "`%s' n'est pas valide dans %s"
 
-#: src/reader.c:639
+#: src/reader.c:630
 #, c-format
 msgid "unrecognized item %s, expected an identifier"
 msgstr "item %s non reconnu, un identificateur est attendu"
 
-#: src/reader.c:661
+#: src/reader.c:652
 #, c-format
 msgid "expected string constant instead of %s"
 msgstr "chaîne de caractères constante attendue plutôt que %s"
 
-#: src/reader.c:683
+#: src/reader.c:674
 #, c-format
 msgid "multiple %start declarations"
 msgstr "multiples déclarations %start"
 
-#: src/reader.c:685
+#: src/reader.c:676
 #, c-format
 msgid "invalid %start declaration"
 msgstr "la déclaration %start n'est pas valide"
 
-#: src/reader.c:705
+#: src/reader.c:696
 msgid "%type declaration has no <typename>"
 msgstr "la déclaration %type n'a pas de <nom_de_type>"
 
-#: src/reader.c:742
-msgid "invalid %%type declaration due to item: `%s'"
+#: src/reader.c:733
+#, fuzzy
+msgid "invalid %%type declaration due to item: %s"
 msgstr "la déclaration %%type n'est pas valide à cause de l'item: %s"
 
-#: src/reader.c:788
+#: src/reader.c:780
 #, c-format
 msgid "redefining precedence of %s"
 msgstr "redéfinition du niveau de priorité de %s"
 
-#: src/reader.c:811
+#: src/reader.c:803
 #, c-format
 msgid "invalid text (%s) - number should be after identifier"
 msgstr ""
 "le texte n'est pas valide (%s) - le nombre devrait suivre l'identificateur"
 
-#: src/reader.c:821
+#: src/reader.c:813
 #, c-format
 msgid "unexpected item: %s"
 msgstr "item inattendu: %s"
 
-#: src/reader.c:845
+#: src/reader.c:837
 #, c-format
 msgid "multiple %union declarations"
 msgstr "multiples déclarations %union"
 
-#: src/reader.c:903
+#: src/reader.c:895
 msgid "unterminated comment at end of file"
 msgstr "le commentaire ne se termine pas avant la fin du fichier"
 
-#: src/reader.c:929
+#: src/reader.c:921
 msgid "unmatched close-brace (`}')"
 msgstr "accolade fermante `}' non appariée"
 
-#: src/reader.c:973
+#: src/reader.c:965
 #, c-format
 msgid "argument of %expect is not an integer"
 msgstr "le paramètre de %expect n'est pas un entier"
 
-#: src/reader.c:1005
+#: src/reader.c:997
 #, c-format
 msgid "@%s is invalid"
 msgstr "@%s n'est pas valide"
 
-#: src/reader.c:1014
+#: src/reader.c:1012 src/reader.c:1024
 msgid "invalid $ value"
 msgstr "la valeur de symbole $ n'est pas valide"
 
-#: src/reader.c:1092
+#: src/reader.c:1083
 msgid "unmatched right brace (`}')"
 msgstr "accolade fermante `}' non appariée"
 
-#: src/reader.c:1139 src/reader.c:1277
+#: src/reader.c:1130 src/reader.c:1270
 #, c-format
 msgid "$$ of `%s' has no declared type"
 msgstr "$$ de `%s' n'a pas son type déclaré"
 
-#: src/reader.c:1154 src/reader.c:1293
-#, c-format
-msgid "$%s of `%s' has no declared type"
+#: src/reader.c:1146 src/reader.c:1286
+#, fuzzy, c-format
+msgid "$%d of `%s' has no declared type"
 msgstr "$%s cd `%s' n'a pas son type déclaré"
 
-#: src/reader.c:1159 src/reader.c:1298
+#: src/reader.c:1151 src/reader.c:1291
 #, c-format
 msgid "$%s is invalid"
 msgstr "$%s n'est pas valide"
 
-#: src/reader.c:1167
-msgid "unterminated %%guard clause"
+#: src/reader.c:1160
+#, fuzzy, c-format
+msgid "unterminated %guard clause"
 msgstr "clause %%guard non terminée"
 
-#: src/reader.c:1307
+#: src/reader.c:1300
 msgid "unmatched `{'"
 msgstr "accolade ouvrante `{' non appariée"
 
-#: src/reader.c:1393
+#: src/reader.c:1386
 msgid "ill-formed rule: initial symbol not followed by colon"
 msgstr "règle mal formée: le symbole initial n'est pas suivi de `:'"
 
-#: src/reader.c:1400
+#: src/reader.c:1393
 msgid "grammar starts with vertical bar"
 msgstr "la grammaire débute par une barre verticale"
 
-#: src/reader.c:1431
+#: src/reader.c:1424
 #, c-format
 msgid "rule given for %s, which is a token"
 msgstr "la règle pour %s, qui est un terminal"
 
-#: src/reader.c:1529
+#: src/reader.c:1522
 msgid "two @prec's in a row"
 msgstr "deux @prec de suite"
 
-#: src/reader.c:1537
-msgid "%%guard present but %%semantic_parser not specified"
+#: src/reader.c:1531
+#, fuzzy, c-format
+msgid "%guard present but %semantic_parser not specified"
 msgstr "%%guard est présent mais %%semantic_parser n'est pas spécifié"
 
-#: src/reader.c:1546
+#: src/reader.c:1540
 msgid "two actions at end of one rule"
 msgstr "deux actions à la fin d'une même règle"
 
-#: src/reader.c:1561
+#: src/reader.c:1555
 #, c-format
 msgid "type clash (`%s' `%s') on default action"
 msgstr "conflit de type (`%s' `%s') pour l'action par défaut"
 
-#: src/reader.c:1567
+#: src/reader.c:1561
 msgid "empty rule for typed nonterminal, and no action"
 msgstr "règle vide pour une catégorie typée et aucune action"
 
-#: src/reader.c:1611
+#: src/reader.c:1605
 #, c-format
 msgid "invalid input: %s"
 msgstr "entrée non valide: %s"
 
-#: src/reader.c:1619
-#, c-format
-msgid "too many symbols (tokens plus nonterminals); maximum %s"
+#: src/reader.c:1613
+#, fuzzy, c-format
+msgid "too many symbols (tokens plus nonterminals); maximum %d"
 msgstr "trop de symboles (terminaux et catégories); maximum de %s"
 
-#: src/reader.c:1622
+#: src/reader.c:1616
 msgid "no rules in the input grammar"
 msgstr "la grammaire n'a pas de règles"
 
-#: src/reader.c:1640
+#: src/reader.c:1634
 #, c-format
 msgid "symbol %s is used, but is not defined as a token and has no rules"
 msgstr ""
 "le symbole %s est utilisé mais ce n'est pas un terminal et il ne possède pas "
 "de règle"
 
-#: src/reader.c:1679
+#: src/reader.c:1673
 msgid "ill-formed %type declaration"
 msgstr "déclaration %type mal formée"
 
-#: src/reader.c:1758
+#: src/reader.c:1752
 #, c-format
 msgid "conflicting precedences for %s and %s"
 msgstr "les priorités pour %s et %s entrent en conflit"
 
-#: src/reader.c:1770
+#: src/reader.c:1764
 #, c-format
 msgid "conflicting assoc values for %s and %s"
 msgstr "les valeurs d'association de %s et %s entrent en conflit"
 
-#: src/reader.c:1821
-#, c-format
-msgid "tokens %s and %s both assigned number %s"
+#: src/reader.c:1815
+#, fuzzy, c-format
+msgid "tokens %s and %s both assigned number %d"
 msgstr "les terminaux %s et %s se sont vus assigner le nombre %s"
 
-#: src/reader.c:1835
+#: src/reader.c:1829
 #, c-format
 msgid "the start symbol %s is undefined"
 msgstr "le symbole de départ %s n'est pas défini"
 
-#: src/reader.c:1837
+#: src/reader.c:1831
 #, c-format
 msgid "the start symbol %s is a token"
 msgstr "le symbole de départ %s est un terminal"
@@ -691,65 +696,72 @@ msgstr " et "
 msgid "%d useless rule%s"
 msgstr "%d règle(s) non productive(s)"
 
-#: src/getopt.c:675
+#: lib/getopt.c:675
 #, c-format
 msgid "%s: option `%s' is ambiguous\n"
 msgstr "%s: l'option %s est ambigüe\n"
 
-#: src/getopt.c:700
+#: lib/getopt.c:700
 #, c-format
 msgid "%s: option `--%s' doesn't allow an argument\n"
 msgstr "%s: l'option --%s n'admet pas de paramètre\n"
 
-#: src/getopt.c:705
+#: lib/getopt.c:705
 #, c-format
 msgid "%s: option `%c%s' doesn't allow an argument\n"
 msgstr "%s: l'option %c%s n'admet pas de paramètre\n"
 
-#: src/getopt.c:723 src/getopt.c:896
+#: lib/getopt.c:723 lib/getopt.c:896
 #, c-format
 msgid "%s: option `%s' requires an argument\n"
 msgstr "%s: l'option %s requiert un paramètre\n"
 
 #. --option
-#: src/getopt.c:752
+#: lib/getopt.c:752
 #, c-format
 msgid "%s: unrecognized option `--%s'\n"
 msgstr "%s: l'option --%s est inconnue\n"
 
 #. +option or -option
-#: src/getopt.c:756
+#: lib/getopt.c:756
 #, c-format
 msgid "%s: unrecognized option `%c%s'\n"
 msgstr "%s: l'option %c%s est inconnue\n"
 
 #. 1003.2 specifies the format of this message.
-#: src/getopt.c:782
+#: lib/getopt.c:782
 #, c-format
 msgid "%s: illegal option -- %c\n"
 msgstr "%s: option illégale -- %c\n"
 
-#: src/getopt.c:785
+#: lib/getopt.c:785
 #, c-format
 msgid "%s: invalid option -- %c\n"
 msgstr "%s: option non valide -- %c\n"
 
 #. 1003.2 specifies the format of this message.
-#: src/getopt.c:815 src/getopt.c:945
+#: lib/getopt.c:815 lib/getopt.c:945
 #, c-format
 msgid "%s: option requires an argument -- %c\n"
 msgstr "%s: Cette option requiert un paramètre -- %c\n"
 
-#: src/getopt.c:862
+#: lib/getopt.c:862
 #, fuzzy, c-format
 msgid "%s: option `-W %s' is ambiguous\n"
 msgstr "%s: l'option %s est ambigüe\n"
 
-#: src/getopt.c:880
+#: lib/getopt.c:880
 #, fuzzy, c-format
 msgid "%s: option `-W %s' doesn't allow an argument\n"
 msgstr "%s: l'option --%s n'admet pas de paramètre\n"
 
+#~ msgid "gotos"
+#~ msgstr "gotos"
+
+#, fuzzy
+#~ msgid "fatal error: "
+#~ msgstr "erreur fatale: %s\n"
+
 #~ msgid ""
 #~ "\n"
 #~ "\n"
index dbe174f..3f18ccf 100644 (file)
--- a/po/nl.po
+++ b/po/nl.po
@@ -5,7 +5,7 @@
 msgid ""
 msgstr ""
 "Project-Id-Version: bison 1.25\n"
-"POT-Creation-Date: 2000-03-28 14:20+0200\n"
+"POT-Creation-Date: 2000-03-31 15:40+0200\n"
 "PO-Revision-Date: 1996-08-27 15:34 MET DST\n"
 "Last-Translator: Erick Branderhorst <branderh@debian.org>\n"
 "Language-Team: Dutch <nl@li.org>\n"
@@ -13,6 +13,11 @@ msgstr ""
 "Content-Type: text/plain; charset=ISO-8859-1\n"
 "Content-Transfer-Encoding: 8-bit\n"
 
+#: src/LR0.c:377
+#, c-format
+msgid "too many states (max %d)"
+msgstr ""
+
 #: src/allocate.c:59 src/allocate.c:75
 #, c-format
 msgid "%s: memory exhausted\n"
@@ -175,74 +180,66 @@ msgstr ""
 msgid "Report bugs to <bug-bison@gnu.org>.\n"
 msgstr ""
 
-#: src/getargs.c:196
+#: src/getargs.c:195
 #, c-format
 msgid "%s: no grammar file given\n"
 msgstr "%s: geen grammatica bestand gegeven\n"
 
-#: src/getargs.c:200
+#: src/getargs.c:199
 #, fuzzy, c-format
 msgid "%s: extra arguments ignored after `%s'\n"
 msgstr "%s: extra argumenten genegeerd na '%s'\n"
 
-#: src/lalr.c:294
-msgid "gotos"
-msgstr "ganaar"
+#: src/lalr.c:293
+#, c-format
+msgid "too many gotos (max %d)"
+msgstr ""
 
-#: src/lex.c:119
+#: src/lex.c:115
 msgid "unexpected `/' found and ignored"
 msgstr "onverwachte `/' gevonden en genegeerd"
 
-#: src/lex.c:148 src/reader.c:258
+#: src/lex.c:144 src/reader.c:248
 msgid "unterminated comment"
 msgstr "ongetermineerd commentaar"
 
-#: src/lex.c:176
-msgid "Unexpected end of file"
+#: src/lex.c:172
+#, fuzzy
+msgid "unexpected end of file"
 msgstr "Onverwacht bestandseinde"
 
-#: src/lex.c:197
+#: src/lex.c:193
 msgid "unescaped newline in constant"
 msgstr "niet geescapete nieuwe regel in constante"
 
-#: src/lex.c:229
+#: src/lex.c:225
 #, c-format
 msgid "octal value outside range 0...255: `\\%o'"
 msgstr "octale waarde buiten domein 0...255: `\\%o'"
 
-#: src/lex.c:253
+#: src/lex.c:250
 #, c-format
 msgid "hexadecimal value above 255: `\\x%x'"
 msgstr "hexadecimale waarde boven 255: `\\x%x'"
 
-#: src/lex.c:263
+#: src/lex.c:261
 #, c-format
 msgid "unknown escape sequence: `\\' followed by `%s'"
 msgstr "onbekende escape reeks: `\\' gevolgd door `%s'"
 
-#: src/lex.c:396
+#: src/lex.c:394
 msgid "use \"...\" for multi-character literal tokens"
 msgstr "gebruik \"...\" voor meerdere karakters literal tekens"
 
-#: src/lex.c:475
+#: src/lex.c:473
 msgid "unterminated type name at end of file"
 msgstr "niet getermineerd type naam aan het einde van bestand"
 
-#: src/lex.c:478
+#: src/lex.c:476
 msgid "unterminated type name"
 msgstr "niet getermineerd type naam"
 
-#: src/main.c:163
-#, fuzzy
-msgid "fatal error: "
-msgstr "fatale fout: %s\n"
-
-#: src/main.c:258
-#, c-format
-msgid "too many %s (max %d)"
-msgstr ""
-
-#: src/main.c:268
+#: src/main.c:137
 #, fuzzy, c-format
 msgid "%s: internal error: %s\n"
 msgstr "interne fout, %s\n"
@@ -251,9 +248,9 @@ msgstr "interne fout, %s\n"
 msgid "Entering set_nullable"
 msgstr "Inkomende set nullable"
 
-#: src/output.c:1201
-#, c-format
-msgid "maximum table size (%s) exceeded"
+#: src/output.c:1199
+#, fuzzy, c-format
+msgid "maximum table size (%d) exceeded"
 msgstr "maximale tabel grootte (%s) overschreden"
 
 #: src/print.c:85
@@ -355,234 +352,242 @@ msgstr " links:"
 msgid " on right:"
 msgstr " rechts:"
 
-#: src/reader.c:163
+#: src/reader.c:154
 msgid "   Skipping to next \\n"
 msgstr "   Verder naar volgende \\n"
 
-#: src/reader.c:165
+#: src/reader.c:156
 #, c-format
 msgid "   Skipping to next %c"
 msgstr "   Verder naar volgende %c"
 
-#: src/reader.c:189 src/reader.c:204
+#: src/reader.c:180 src/reader.c:195
 msgid "unterminated string at end of file"
 msgstr "niet getermineerde string aan einde van bestand"
 
-#: src/reader.c:192
+#: src/reader.c:183
 msgid "unterminated string"
 msgstr "niet getermineerde string"
 
-#: src/reader.c:434
+#: src/reader.c:424
 #, c-format
 msgid "unrecognized: %s"
 msgstr "onbekend: %s"
 
-#: src/reader.c:439
+#: src/reader.c:429
 msgid "no input grammar"
 msgstr "geen invoer grammatica"
 
-#: src/reader.c:442
+#: src/reader.c:432
 #, c-format
 msgid "unknown character: %s"
 msgstr "onbekend karakter: %s"
 
-#: src/reader.c:493
+#: src/reader.c:484
 msgid "unterminated `%{' definition"
 msgstr "niet getermineerde `%{' definitie"
 
-#: src/reader.c:571 src/reader.c:792
+#: src/reader.c:525 src/reader.c:713 src/reader.c:762
+#, c-format
+msgid "Premature EOF after %s"
+msgstr ""
+
+#: src/reader.c:562 src/reader.c:784
 #, c-format
 msgid "symbol %s redefined"
 msgstr "symbool %s opnieuw gedefinieerd"
 
-#: src/reader.c:581 src/reader.c:737 src/reader.c:799 src/reader.c:1703
+#: src/reader.c:572 src/reader.c:728 src/reader.c:791 src/reader.c:1697
 #, c-format
 msgid "type redeclaration for %s"
 msgstr "type herdeclaratie voor %s"
 
-#: src/reader.c:591
+#: src/reader.c:582
 #, c-format
 msgid "`%s' is invalid in %s"
 msgstr "`%s' is onjuist in %s"
 
-#: src/reader.c:639
+#: src/reader.c:630
 #, c-format
 msgid "unrecognized item %s, expected an identifier"
 msgstr "onbekend item %s, verwacht een identifier"
 
-#: src/reader.c:661
+#: src/reader.c:652
 #, c-format
 msgid "expected string constant instead of %s"
 msgstr "verwacht string constante in plaats van %s"
 
-#: src/reader.c:683
+#: src/reader.c:674
 #, c-format
 msgid "multiple %start declarations"
 msgstr "meerdere %start declaraties"
 
-#: src/reader.c:685
+#: src/reader.c:676
 #, c-format
 msgid "invalid %start declaration"
 msgstr "onjuiste %start declaratie"
 
-#: src/reader.c:705
+#: src/reader.c:696
 msgid "%type declaration has no <typename>"
 msgstr "%type declaratie heeft geen <typenaam>"
 
-#: src/reader.c:742
-msgid "invalid %%type declaration due to item: `%s'"
+#: src/reader.c:733
+#, fuzzy
+msgid "invalid %%type declaration due to item: %s"
 msgstr "onjuist %%type declaratie door item: `%s'"
 
-#: src/reader.c:788
+#: src/reader.c:780
 #, c-format
 msgid "redefining precedence of %s"
 msgstr "herdefinieren voorganger van %s"
 
-#: src/reader.c:811
+#: src/reader.c:803
 #, c-format
 msgid "invalid text (%s) - number should be after identifier"
 msgstr "onjuiste tekst (%s) - nummer hoort na de identifier"
 
-#: src/reader.c:821
+#: src/reader.c:813
 #, c-format
 msgid "unexpected item: %s"
 msgstr "onbekend item: %s"
 
-#: src/reader.c:845
+#: src/reader.c:837
 #, c-format
 msgid "multiple %union declarations"
 msgstr "meerdere %union declaraties"
 
-#: src/reader.c:903
+#: src/reader.c:895
 msgid "unterminated comment at end of file"
 msgstr "niet getermineerd commentaar aan einde van bestand"
 
-#: src/reader.c:929
+#: src/reader.c:921
 msgid "unmatched close-brace (`}')"
 msgstr "niet overeenkomstige afsluit-haakje (`}')"
 
-#: src/reader.c:973
+#: src/reader.c:965
 #, c-format
 msgid "argument of %expect is not an integer"
 msgstr "argument van %expect is niet een integer"
 
-#: src/reader.c:1005
+#: src/reader.c:997
 #, c-format
 msgid "@%s is invalid"
 msgstr "@%s is onjuist"
 
-#: src/reader.c:1014
+#: src/reader.c:1012 src/reader.c:1024
 msgid "invalid $ value"
 msgstr "onjuiste $ waarde"
 
-#: src/reader.c:1092
+#: src/reader.c:1083
 msgid "unmatched right brace (`}')"
 msgstr "niet overeenkomstig rechter haakje (`}')"
 
-#: src/reader.c:1139 src/reader.c:1277
+#: src/reader.c:1130 src/reader.c:1270
 #, c-format
 msgid "$$ of `%s' has no declared type"
 msgstr "$$ van `%s' heeft geen gedeclareerd type"
 
-#: src/reader.c:1154 src/reader.c:1293
-#, c-format
-msgid "$%s of `%s' has no declared type"
+#: src/reader.c:1146 src/reader.c:1286
+#, fuzzy, c-format
+msgid "$%d of `%s' has no declared type"
 msgstr "$%s van `%s' heeft geen gedeclareerd type"
 
-#: src/reader.c:1159 src/reader.c:1298
+#: src/reader.c:1151 src/reader.c:1291
 #, c-format
 msgid "$%s is invalid"
 msgstr "$%s is onjuist"
 
-#: src/reader.c:1167
-msgid "unterminated %%guard clause"
+#: src/reader.c:1160
+#, fuzzy, c-format
+msgid "unterminated %guard clause"
 msgstr "niet getermineerde %%guard voorwaarde"
 
-#: src/reader.c:1307
+#: src/reader.c:1300
 msgid "unmatched `{'"
 msgstr "niet overeenkomstige `{'"
 
-#: src/reader.c:1393
+#: src/reader.c:1386
 msgid "ill-formed rule: initial symbol not followed by colon"
 msgstr ""
 "slecht geformuleerde regel: initieel symbool niet gevolgd door dubbele punt"
 
-#: src/reader.c:1400
+#: src/reader.c:1393
 msgid "grammar starts with vertical bar"
 msgstr "grammatica start met een verticale bar"
 
-#: src/reader.c:1431
+#: src/reader.c:1424
 #, c-format
 msgid "rule given for %s, which is a token"
 msgstr "regel geven voor %s, welke een teken is"
 
-#: src/reader.c:1529
+#: src/reader.c:1522
 msgid "two @prec's in a row"
 msgstr "twee @prec's in een regel"
 
-#: src/reader.c:1537
-msgid "%%guard present but %%semantic_parser not specified"
+#: src/reader.c:1531
+#, fuzzy, c-format
+msgid "%guard present but %semantic_parser not specified"
 msgstr "%%guard aanwezig maar %%semantic_parser niet gespecificeerd"
 
-#: src/reader.c:1546
+#: src/reader.c:1540
 msgid "two actions at end of one rule"
 msgstr "twee akties aan het einde van een regel"
 
-#: src/reader.c:1561
+#: src/reader.c:1555
 #, c-format
 msgid "type clash (`%s' `%s') on default action"
 msgstr "type clash (`%s' `%s') bij standaard aktie"
 
-#: src/reader.c:1567
+#: src/reader.c:1561
 msgid "empty rule for typed nonterminal, and no action"
 msgstr "lege regel voor getypte niet terminal, en geen aktie"
 
-#: src/reader.c:1611
+#: src/reader.c:1605
 #, c-format
 msgid "invalid input: %s"
 msgstr "ongeldige invoer: %s"
 
-#: src/reader.c:1619
-#, c-format
-msgid "too many symbols (tokens plus nonterminals); maximum %s"
+#: src/reader.c:1613
+#, fuzzy, c-format
+msgid "too many symbols (tokens plus nonterminals); maximum %d"
 msgstr "te veel symbolen (tekens plus nietterminals); maximum %s"
 
-#: src/reader.c:1622
+#: src/reader.c:1616
 msgid "no rules in the input grammar"
 msgstr "geen regels voor invoer grammatica"
 
-#: src/reader.c:1640
+#: src/reader.c:1634
 #, c-format
 msgid "symbol %s is used, but is not defined as a token and has no rules"
 msgstr ""
 "symbool %s is gebruikt, maar is niet gedefinieerd als een teken en\n"
 "heeft geen regels"
 
-#: src/reader.c:1679
+#: src/reader.c:1673
 msgid "ill-formed %type declaration"
 msgstr "slecht geformuleerde %type declaratie"
 
-#: src/reader.c:1758
+#: src/reader.c:1752
 #, c-format
 msgid "conflicting precedences for %s and %s"
 msgstr "conflictuerende precedentein voor %s en %s"
 
-#: src/reader.c:1770
+#: src/reader.c:1764
 #, c-format
 msgid "conflicting assoc values for %s and %s"
 msgstr "conflictuerende associatieve waarden voor %s en %s"
 
-#: src/reader.c:1821
+#: src/reader.c:1815
 #, c-format
-msgid "tokens %s and %s both assigned number %s"
+msgid "tokens %s and %s both assigned number %d"
 msgstr ""
 
-#: src/reader.c:1835
+#: src/reader.c:1829
 #, c-format
 msgid "the start symbol %s is undefined"
 msgstr ""
 
-#: src/reader.c:1837
+#: src/reader.c:1831
 #, c-format
 msgid "the start symbol %s is a token"
 msgstr "het start symbool %s is een token"
@@ -690,65 +695,72 @@ msgstr " en "
 msgid "%d useless rule%s"
 msgstr "%d onbruikbare regels%s"
 
-#: src/getopt.c:675
+#: lib/getopt.c:675
 #, c-format
 msgid "%s: option `%s' is ambiguous\n"
 msgstr "%s: optie `%s' is niet eenduidig\n"
 
-#: src/getopt.c:700
+#: lib/getopt.c:700
 #, c-format
 msgid "%s: option `--%s' doesn't allow an argument\n"
 msgstr "%s: optie `--%s' staat geen argument toe\n"
 
-#: src/getopt.c:705
+#: lib/getopt.c:705
 #, c-format
 msgid "%s: option `%c%s' doesn't allow an argument\n"
 msgstr "%s: optie `%c%s' staat geen argument toe\n"
 
-#: src/getopt.c:723 src/getopt.c:896
+#: lib/getopt.c:723 lib/getopt.c:896
 #, c-format
 msgid "%s: option `%s' requires an argument\n"
 msgstr "%s: optie `%s' vereist een argument\n"
 
 #. --option
-#: src/getopt.c:752
+#: lib/getopt.c:752
 #, c-format
 msgid "%s: unrecognized option `--%s'\n"
 msgstr "%s: onbekende optie `--%s'\n"
 
 #. +option or -option
-#: src/getopt.c:756
+#: lib/getopt.c:756
 #, c-format
 msgid "%s: unrecognized option `%c%s'\n"
 msgstr "%s: onbekende optie `%c%s'\n"
 
 #. 1003.2 specifies the format of this message.
-#: src/getopt.c:782
+#: lib/getopt.c:782
 #, c-format
 msgid "%s: illegal option -- %c\n"
 msgstr "%s: ongeldige optie -- %c\n"
 
-#: src/getopt.c:785
+#: lib/getopt.c:785
 #, c-format
 msgid "%s: invalid option -- %c\n"
 msgstr "%s: onjuiste optie -- %c\n"
 
 #. 1003.2 specifies the format of this message.
-#: src/getopt.c:815 src/getopt.c:945
+#: lib/getopt.c:815 lib/getopt.c:945
 #, c-format
 msgid "%s: option requires an argument -- %c\n"
 msgstr "%s: optie vereist een argument -- %c\n"
 
-#: src/getopt.c:862
+#: lib/getopt.c:862
 #, fuzzy, c-format
 msgid "%s: option `-W %s' is ambiguous\n"
 msgstr "%s: optie `%s' is niet eenduidig\n"
 
-#: src/getopt.c:880
+#: lib/getopt.c:880
 #, fuzzy, c-format
 msgid "%s: option `-W %s' doesn't allow an argument\n"
 msgstr "%s: optie `--%s' staat geen argument toe\n"
 
+#~ msgid "gotos"
+#~ msgstr "ganaar"
+
+#, fuzzy
+#~ msgid "fatal error: "
+#~ msgstr "fatale fout: %s\n"
+
 #~ msgid ""
 #~ "\n"
 #~ "\n"
index 1435142..8e399a9 100644 (file)
--- a/po/ru.po
+++ b/po/ru.po
@@ -5,7 +5,7 @@
 msgid ""
 msgstr ""
 "Project-Id-Version: bison 1.25\n"
-"POT-Creation-Date: 2000-03-28 14:20+0200\n"
+"POT-Creation-Date: 2000-03-31 15:40+0200\n"
 "PO-Revision-Date: 1999-07-12 12:18\n"
 "Last-Translator: Dmitry S. Sivachenko <dima@Chg.RU>\n"
 "Language-Team: Russian <ru@li.org>\n"
@@ -13,6 +13,11 @@ msgstr ""
 "Content-Type: text/plain; charset=koi8-r\n"
 "Content-Transfer-Encoding: 8-bit\n"
 
+#: src/LR0.c:377
+#, c-format
+msgid "too many states (max %d)"
+msgstr ""
+
 #: src/allocate.c:59 src/allocate.c:75
 #, c-format
 msgid "%s: memory exhausted\n"
@@ -171,74 +176,66 @@ msgstr ""
 msgid "Report bugs to <bug-bison@gnu.org>.\n"
 msgstr ""
 
-#: src/getargs.c:196
+#: src/getargs.c:195
 #, c-format
 msgid "%s: no grammar file given\n"
 msgstr "%s: ÎÅ ÚÁÄÁΠÆÁÊÌ Ó ÇÒÁÍÍÁÔÉËÏÊ\n"
 
-#: src/getargs.c:200
+#: src/getargs.c:199
 #, fuzzy, c-format
 msgid "%s: extra arguments ignored after `%s'\n"
 msgstr "%s: ÌÉÛÎÉÅ ÁÒÇÕÍÅÎÔÙ ÐÏÓÌÅ '%s' ÉÇÎÏÒÉÒÏ×ÁÎÙ\n"
 
-#: src/lalr.c:294
-msgid "gotos"
-msgstr "ÂÅÚÕÓÌÏ×ÎÙÈ ÐÅÒÅÈÏÄÏ×"
+#: src/lalr.c:293
+#, c-format
+msgid "too many gotos (max %d)"
+msgstr ""
 
-#: src/lex.c:119
+#: src/lex.c:115
 msgid "unexpected `/' found and ignored"
 msgstr "×ÓÔÒÅÞÅΠɠÐÒÏÉÇÎÏÒÉÒÏ×ÁΠÎÅÏÖÉÄÁÎÎÙÊ ÓÉÍ×ÏÌ `/'"
 
-#: src/lex.c:148 src/reader.c:258
+#: src/lex.c:144 src/reader.c:248
 msgid "unterminated comment"
 msgstr "ÎÅÚÁËÏÎÞÅÎÎÙÊ ËÏÍÍÅÎÔÁÒÉÊ"
 
-#: src/lex.c:176
-msgid "Unexpected end of file"
+#: src/lex.c:172
+#, fuzzy
+msgid "unexpected end of file"
 msgstr "îÅÏÖÉÄÁÎÎÙÊ ËÏÎÅàÆÁÊÌÁ"
 
-#: src/lex.c:197
+#: src/lex.c:193
 msgid "unescaped newline in constant"
 msgstr "ÎÅÜËÒÁÎÉÒÏ×ÁÎÎÙÊ ÐÅÒÅ×ÏÄ ÓÔÒÏËÉ × ËÏÎÓÔÁÎÔÅ"
 
-#: src/lex.c:229
+#: src/lex.c:225
 #, c-format
 msgid "octal value outside range 0...255: `\\%o'"
 msgstr "×ÏÓØÍÅÒÉÞÎÁÑ ×ÅÌÉÞÉÎÁ ÚÁ ÐÒÅÄÅÌÁÍÉ ÄÉÁÐÁÚÏÎÁ 0...255: `\\%o'"
 
-#: src/lex.c:253
+#: src/lex.c:250
 #, c-format
 msgid "hexadecimal value above 255: `\\x%x'"
 msgstr "ÛÅÓÔÎÁÄÃÁÔÅÒÉÞÎÁÑ ×ÅÌÉÞÉÎÁ ÐÒÅ×ÙÛÁÅÔ 255: `\\x%x'"
 
-#: src/lex.c:263
+#: src/lex.c:261
 #, c-format
 msgid "unknown escape sequence: `\\' followed by `%s'"
 msgstr "ÎÅÉÚ×ÅÓÔÎÁÑ escape-ÐÏÓÌÅÄÏ×ÁÔÅÌØÎÏÓÔØ: `%s' ÐÏÓÌÅ `\\'"
 
-#: src/lex.c:396
+#: src/lex.c:394
 msgid "use \"...\" for multi-character literal tokens"
 msgstr "ÉÓÐÏÌØÚÕÊÔÅ \"...\" ÄÌÑ ÍÎÏÇÏÓÉÍ×ÏÌØÎÙÈ ÌÉÔÅÒÁÌØÎÙÈ ÌÅËÓÅÍ"
 
-#: src/lex.c:475
+#: src/lex.c:473
 msgid "unterminated type name at end of file"
 msgstr "ÎÅÚÁËÏÎÞÅÎÎÏÅ ÉÍÑ ÔÉÐÁ × ËÏÎÃÅ ÆÁÊÌÁ"
 
-#: src/lex.c:478
+#: src/lex.c:476
 msgid "unterminated type name"
 msgstr "ÎÅÚÁËÏÎÞÅÎÎÏÅ ÉÍÑ ÔÉÐÁ"
 
-#: src/main.c:163
-#, fuzzy
-msgid "fatal error: "
-msgstr "ÆÁÔÁÌØÎÁÑ ÏÛÉÂËÁ: %s\n"
-
-#: src/main.c:258
-#, c-format
-msgid "too many %s (max %d)"
-msgstr ""
-
-#: src/main.c:268
+#: src/main.c:137
 #, fuzzy, c-format
 msgid "%s: internal error: %s\n"
 msgstr "×ÎÕÔÒÅÎÎÑÑ ÏÛÉÂËÁ, %s\n"
@@ -247,9 +244,9 @@ msgstr "
 msgid "Entering set_nullable"
 msgstr "÷ÈÏÄ × set_nullable"
 
-#: src/output.c:1201
-#, c-format
-msgid "maximum table size (%s) exceeded"
+#: src/output.c:1199
+#, fuzzy, c-format
+msgid "maximum table size (%d) exceeded"
 msgstr "ÐÒÅ×ÙÛÅΠÍÁËÓÉÍÁÌØÎÙÊ ÒÁÚÍÅÒ ÔÁÂÌÉÃÙ (%s)"
 
 #: src/print.c:85
@@ -351,232 +348,240 @@ msgstr " 
 msgid " on right:"
 msgstr " ÎÁÐÒÁ×Ï:"
 
-#: src/reader.c:163
+#: src/reader.c:154
 msgid "   Skipping to next \\n"
 msgstr "   ðÒÏÐÕÓË ÄÏ ÓÌÅÄÕÀÝÅÇÏ \\n"
 
-#: src/reader.c:165
+#: src/reader.c:156
 #, c-format
 msgid "   Skipping to next %c"
 msgstr "   ðÒÏÐÕÓË ÄÏ ÓÌÅÄÕÀÝÅÇÏ %c"
 
-#: src/reader.c:189 src/reader.c:204
+#: src/reader.c:180 src/reader.c:195
 msgid "unterminated string at end of file"
 msgstr "ÎÅÚÁËÏÎÞÅÎÎÁÑ ÓÔÒÏËÁ × ËÏÎÃÅ ÆÁÊÌÁ"
 
-#: src/reader.c:192
+#: src/reader.c:183
 msgid "unterminated string"
 msgstr "ÎÅÚÁËÏÎÞÅÎÎÁÑ ÓÔÒÏËÁ"
 
-#: src/reader.c:434
+#: src/reader.c:424
 #, c-format
 msgid "unrecognized: %s"
 msgstr "ÎÅÒÁÓÐÏÚÎÁÎÏ: %s"
 
-#: src/reader.c:439
+#: src/reader.c:429
 msgid "no input grammar"
 msgstr "ÎÅÔ ×ÈÏÄÎÏÊ ÇÒÁÍÍÁÔÉËÉ"
 
-#: src/reader.c:442
+#: src/reader.c:432
 #, c-format
 msgid "unknown character: %s"
 msgstr "ÎÅÉÚ×ÅÓÔÎÙÊ ÓÉÍ×ÏÌ: %s"
 
-#: src/reader.c:493
+#: src/reader.c:484
 msgid "unterminated `%{' definition"
 msgstr "ÎÅÚÁËÏÎÞÅÎÎÏÅ ÏÐÒÅÄÅÌÅÎÉÅ `%{'"
 
-#: src/reader.c:571 src/reader.c:792
+#: src/reader.c:525 src/reader.c:713 src/reader.c:762
+#, c-format
+msgid "Premature EOF after %s"
+msgstr ""
+
+#: src/reader.c:562 src/reader.c:784
 #, c-format
 msgid "symbol %s redefined"
 msgstr "ÐÏ×ÔÏÒÎÏÅ ÏÐÒÅÄÅÌÅÎÉÅ ÓÉÍ×ÏÌÁ %s"
 
-#: src/reader.c:581 src/reader.c:737 src/reader.c:799 src/reader.c:1703
+#: src/reader.c:572 src/reader.c:728 src/reader.c:791 src/reader.c:1697
 #, c-format
 msgid "type redeclaration for %s"
 msgstr "ÐÏ×ÔÏÒÎÏÅ ÏÐÉÓÁÎÉÅ ÔÉÐÁ ÄÌÑ %s"
 
-#: src/reader.c:591
+#: src/reader.c:582
 #, c-format
 msgid "`%s' is invalid in %s"
 msgstr "`%s' ÎÅ×ÅÒÎÏ × %s"
 
-#: src/reader.c:639
+#: src/reader.c:630
 #, c-format
 msgid "unrecognized item %s, expected an identifier"
 msgstr "ÎÅÒÁÓÐÏÚÎÁÎÎÙÊ ÜÌÅÍÅÎÔ %s, ÏÖÉÄÁÌÓÑ ÉÄÅÎÔÉÆÉËÁÔÏÒ"
 
-#: src/reader.c:661
+#: src/reader.c:652
 #, c-format
 msgid "expected string constant instead of %s"
 msgstr "×ÍÅÓÔÏ %s ÏÖÉÄÁÌÁÓØ ÓÔÒÏËÏ×ÁÑ ÐÏÓÔÏÑÎÎÁÑ"
 
-#: src/reader.c:683
+#: src/reader.c:674
 #, c-format
 msgid "multiple %start declarations"
 msgstr "ÍÎÏÖÅÓÔ×ÅÎÎÏÅ ÏÐÉÓÁÎÉÅ %start"
 
-#: src/reader.c:685
+#: src/reader.c:676
 #, c-format
 msgid "invalid %start declaration"
 msgstr "ÎÅ×ÅÒÎÏÅ ÏÐÉÓÁÎÉÅ %start"
 
-#: src/reader.c:705
+#: src/reader.c:696
 msgid "%type declaration has no <typename>"
 msgstr "ÏÐÉÓÁÎÉÅ %type ÎÅ ÉÍÅÅÔ <ÉÍÑ_ÔÉÐÁ>"
 
-#: src/reader.c:742
-msgid "invalid %%type declaration due to item: `%s'"
+#: src/reader.c:733
+#, fuzzy
+msgid "invalid %%type declaration due to item: %s"
 msgstr "ÎÅ×ÅÒÎÏÅ ÏÐÉÓÁÎÉÅ %%type ÉÚ-ÚÁ ÜÌÅÍÅÎÔÁ: `%s'"
 
-#: src/reader.c:788
+#: src/reader.c:780
 #, c-format
 msgid "redefining precedence of %s"
 msgstr "ÐÅÒÅÏÐÒÅÄÅÌÅÎÉÅ ÐÒÉÏÒÉÔÅÔÁ ÄÌÑ %s"
 
-#: src/reader.c:811
+#: src/reader.c:803
 #, c-format
 msgid "invalid text (%s) - number should be after identifier"
 msgstr "ÎÅ×ÅÒÎÙÊ ÔÅËÓÔ (%s) - ÞÉÓÌÏ ÄÏÌÖÎÏ ÓÌÅÄÏ×ÁÔØ ÚÁ ÉÄÅÎÔÉÆÉËÁÔÏÒÏÍ"
 
-#: src/reader.c:821
+#: src/reader.c:813
 #, c-format
 msgid "unexpected item: %s"
 msgstr "ÎÅÏÖÉÄÁÎÎÙÊ ÜÌÅÍÅÎÔ: %s"
 
-#: src/reader.c:845
+#: src/reader.c:837
 #, c-format
 msgid "multiple %union declarations"
 msgstr "ÍÎÏÖÅÓÔ×ÅÎÎÏÅ ÏÐÉÓÁÎÉÅ %union"
 
-#: src/reader.c:903
+#: src/reader.c:895
 msgid "unterminated comment at end of file"
 msgstr "ÎÅÚÁËÏÎÞÅÎÎÙÊ ËÏÍÍÅÎÔÁÒÉÊ × ËÏÎÃÅ ÆÁÊÌÁ"
 
-#: src/reader.c:929
+#: src/reader.c:921
 msgid "unmatched close-brace (`}')"
 msgstr "ÎÅÐÁÒÎÁÑ ÚÁËÒÙ×ÁÀÝÁÑ ÆÉÇÕÒÎÁÑ ÓËÏÂËÁ (`}')"
 
-#: src/reader.c:973
+#: src/reader.c:965
 #, c-format
 msgid "argument of %expect is not an integer"
 msgstr "ÁÒÇÕÍÅÎÔ %expect ÎÅ Ñ×ÌÑÅÔÓÑ ÃÅÌÙÍ ÞÉÓÌÏÍ"
 
-#: src/reader.c:1005
+#: src/reader.c:997
 #, c-format
 msgid "@%s is invalid"
 msgstr "ÎÅ×ÅÒÎÙÊ ÚÎÁË @%s"
 
-#: src/reader.c:1014
+#: src/reader.c:1012 src/reader.c:1024
 msgid "invalid $ value"
 msgstr "ÎÅ×ÅÒÎÏÅ $ ÚÎÁÞÅÎÉÅ"
 
-#: src/reader.c:1092
+#: src/reader.c:1083
 msgid "unmatched right brace (`}')"
 msgstr "ÎÅÐÁÒÎÁÑ ÐÒÁ×ÁÑ ÆÉÇÕÒÎÁÑ ÓËÏÂËÁ (`}')"
 
-#: src/reader.c:1139 src/reader.c:1277
+#: src/reader.c:1130 src/reader.c:1270
 #, c-format
 msgid "$$ of `%s' has no declared type"
 msgstr "$$ × `%s' ÎÅ ÉÍÅÅÔ ÏÐÉÓÁÎÎÏÇÏ ÔÉÐÁ"
 
-#: src/reader.c:1154 src/reader.c:1293
-#, c-format
-msgid "$%s of `%s' has no declared type"
+#: src/reader.c:1146 src/reader.c:1286
+#, fuzzy, c-format
+msgid "$%d of `%s' has no declared type"
 msgstr "$%s × `%s' ÎÅ ÉÍÅÅÔ ÏÐÉÓÁÎÎÏÇÏ ÔÉÐÁ"
 
-#: src/reader.c:1159 src/reader.c:1298
+#: src/reader.c:1151 src/reader.c:1291
 #, c-format
 msgid "$%s is invalid"
 msgstr "ÎÅ×ÅÒÎÙÊ ÚÎÁË $%s"
 
-#: src/reader.c:1167
-msgid "unterminated %%guard clause"
+#: src/reader.c:1160
+#, fuzzy, c-format
+msgid "unterminated %guard clause"
 msgstr "ÎÅÚÁËÏÎÞÅÎÎÙÊ ÏÐÅÒÁÔÏÒ %%guard"
 
-#: src/reader.c:1307
+#: src/reader.c:1300
 msgid "unmatched `{'"
 msgstr "ÎÅÐÁÒÎÁÑ `{'"
 
-#: src/reader.c:1393
+#: src/reader.c:1386
 msgid "ill-formed rule: initial symbol not followed by colon"
 msgstr "ÎÅ×ÅÒÎÏÅ ÐÒÁ×ÉÌÏ: Ä×ÏÅÔÏÞÉÅ ÎÅ ÓÌÅÄÕÅÔ ÚÁ ÎÁÞÁÌØÎÙÍ ÓÉÍ×ÏÌÏÍ"
 
-#: src/reader.c:1400
+#: src/reader.c:1393
 msgid "grammar starts with vertical bar"
 msgstr "ÇÒÁÍÍÁÔÉËÁ ÎÁÞÉÎÁÅÔÓÑ Ó ×ÅÒÔÉËÁÌØÎÏÊ ÞÅÒÔÙ"
 
-#: src/reader.c:1431
+#: src/reader.c:1424
 #, c-format
 msgid "rule given for %s, which is a token"
 msgstr "ÐÒÁ×ÉÌÏ ÚÁÄÁÎÏ ÄÌÑ %s, ËÏÔÏÒÙÊ Ñ×ÌÑÅÔÓÑ ÌÅËÓÅÍÏÊ"
 
-#: src/reader.c:1529
+#: src/reader.c:1522
 msgid "two @prec's in a row"
 msgstr "Ä×Á @prec ÐÏÄÒÑÄ"
 
-#: src/reader.c:1537
-msgid "%%guard present but %%semantic_parser not specified"
+#: src/reader.c:1531
+#, fuzzy, c-format
+msgid "%guard present but %semantic_parser not specified"
 msgstr "%%guard ÐÒÉÓÕÔÓÔ×ÕÅÔ, Á %%semantic_parser ÎÅ ÚÁÄÁÎ"
 
-#: src/reader.c:1546
+#: src/reader.c:1540
 msgid "two actions at end of one rule"
 msgstr "Ä×Á ÄÅÊÓÔ×ÉÑ × ËÏÎÃÅ ÏÄÎÏÇÏ ÐÒÁ×ÉÌÁ"
 
-#: src/reader.c:1561
+#: src/reader.c:1555
 #, c-format
 msgid "type clash (`%s' `%s') on default action"
 msgstr "ËÏÎÆÌÉËÔ ÔÉÐÏ× (`%s' `%s') ÎÁ ÄÅÊÓÔ×ÉÉ ÐÏ ÕÍÏÌÞÁÎÉÀ"
 
-#: src/reader.c:1567
+#: src/reader.c:1561
 msgid "empty rule for typed nonterminal, and no action"
 msgstr ""
 "ÐÕÓÔÏÅ ÐÒÁ×ÉÌÏ ÄÌÑ ÔÉÐÉÚÉÒÏ×ÁÎÎÏÇÏ ÎÅÔÅÒÍÉÎÁÌØÎÏÇÏ ÓÉÍ×ÏÌÁ, É ÎÅÔ ÄÅÊÓÔ×ÉÑ"
 
-#: src/reader.c:1611
+#: src/reader.c:1605
 #, c-format
 msgid "invalid input: %s"
 msgstr "ÎÅ×ÅÒÎÙÅ ×ÈÏÄÎÙÅ ÄÁÎÎÙÅ: %s"
 
-#: src/reader.c:1619
-#, c-format
-msgid "too many symbols (tokens plus nonterminals); maximum %s"
+#: src/reader.c:1613
+#, fuzzy, c-format
+msgid "too many symbols (tokens plus nonterminals); maximum %d"
 msgstr "ÓÌÉÛËÏÍ ÍÎÏÇÏ ÓÉÍ×ÏÌÏ× (ÌÅËÓÅÍÙ ÐÌÀÓ ÎÅÔÅÒÍÉÎÁÌÙ); ÍÁËÓÉÍÁÌØÎÏ %s"
 
-#: src/reader.c:1622
+#: src/reader.c:1616
 msgid "no rules in the input grammar"
 msgstr "ÏÔÓÕÔÓÔ×ÕÀÔ ÐÒÁ×ÉÌÁ ×Ï ×ÈÏÄÎÏÊ ÇÒÁÍÍÁÔÉËÅ"
 
-#: src/reader.c:1640
+#: src/reader.c:1634
 #, c-format
 msgid "symbol %s is used, but is not defined as a token and has no rules"
 msgstr "ÓÉÍ×ÏÌ %s ÉÓÐÏÌØÚÕÅÔÓÑ, ÎÏ ÎÅ ÏÐÒÅÄÅÌÅΠËÁË ÌÅËÓÅÍÁ É ÎÅ ÉÍÅÅÔ ÐÒÁ×ÉÌ"
 
-#: src/reader.c:1679
+#: src/reader.c:1673
 msgid "ill-formed %type declaration"
 msgstr "ÎÅ×ÅÒÎÏÅ ÏÐÉÓÁÎÉÅ %type"
 
-#: src/reader.c:1758
+#: src/reader.c:1752
 #, c-format
 msgid "conflicting precedences for %s and %s"
 msgstr "ÐÒÏÔÉ×ÏÒÅÞÉ×ÙÅ ÐÒÉÏÒÉÔÅÔÙ ÄÌÑ %s É %s"
 
-#: src/reader.c:1770
+#: src/reader.c:1764
 #, c-format
 msgid "conflicting assoc values for %s and %s"
 msgstr "ÐÒÏÔÉ×ÏÒÅÞÉ×ÙÅ ÚÎÁÞÅÎÉÑ ÁÓÓÏÃÉÁÔÉ×ÎÏÓÔÉ ÄÌÑ %s É %s"
 
-#: src/reader.c:1821
-#, c-format
-msgid "tokens %s and %s both assigned number %s"
+#: src/reader.c:1815
+#, fuzzy, c-format
+msgid "tokens %s and %s both assigned number %d"
 msgstr "ÏÂÏÉÍ ÌÅËÓÅÍÁÍ %s É %s ÐÒÉÓ×ÏÅΠÎÏÍÅÒ %s"
 
-#: src/reader.c:1835
+#: src/reader.c:1829
 #, c-format
 msgid "the start symbol %s is undefined"
 msgstr "ÎÁÞÁÌØÎÙÊ ÓÉÍ×ÏÌ %s ÎÅÏÐÒÅÄÅÌÅÎ"
 
-#: src/reader.c:1837
+#: src/reader.c:1831
 #, c-format
 msgid "the start symbol %s is a token"
 msgstr "ÎÁÞÁÌØÎÙÊ ÓÉÍ×ÏÌ %s Ñ×ÌÑÅÔÓÑ ÌÅËÓÅÍÏÊ"
@@ -684,65 +689,72 @@ msgstr " 
 msgid "%d useless rule%s"
 msgstr "%d ÂÅÓÐÏÌÅÚÎÙÈ ÐÒÁ×ÉÌ%s"
 
-#: src/getopt.c:675
+#: lib/getopt.c:675
 #, c-format
 msgid "%s: option `%s' is ambiguous\n"
 msgstr "%s: ÎÅÏÄÎÏÚÎÁÞÎÙÊ ËÌÀÞ `%s'\n"
 
-#: src/getopt.c:700
+#: lib/getopt.c:700
 #, c-format
 msgid "%s: option `--%s' doesn't allow an argument\n"
 msgstr "%s: ËÌÀÞ `--%s' ÄÏÌÖÅΠÉÓÐÏÌØÚÏ×ÁÔØÓÑ ÂÅÚ ÁÒÇÕÍÅÎÔÁ\n"
 
-#: src/getopt.c:705
+#: lib/getopt.c:705
 #, c-format
 msgid "%s: option `%c%s' doesn't allow an argument\n"
 msgstr "%s: ËÌÀÞ `%c%s' ÄÏÌÖÅΠÉÓÐÏÌØÚÏ×ÁÔØÓÑ ÂÅÚ ÁÒÇÕÍÅÎÔÁ\n"
 
-#: src/getopt.c:723 src/getopt.c:896
+#: lib/getopt.c:723 lib/getopt.c:896
 #, c-format
 msgid "%s: option `%s' requires an argument\n"
 msgstr "%s: ËÌÀÞ `%s' ÄÏÌÖÅΠÉÓÐÏÌØÚÏ×ÁÔØÓÑ Ó ÁÒÇÕÍÅÎÔÏÍ\n"
 
 #. --option
-#: src/getopt.c:752
+#: lib/getopt.c:752
 #, c-format
 msgid "%s: unrecognized option `--%s'\n"
 msgstr "%s: ÎÅÉÚ×ÅÓÔÎÙÊ ËÌÀÞ `--%s'\n"
 
 #. +option or -option
-#: src/getopt.c:756
+#: lib/getopt.c:756
 #, c-format
 msgid "%s: unrecognized option `%c%s'\n"
 msgstr "%s: ÎÅÉÚ×ÅÓÔÎÙÊ ËÌÀÞ `%c%s'\n"
 
 #. 1003.2 specifies the format of this message.
-#: src/getopt.c:782
+#: lib/getopt.c:782
 #, c-format
 msgid "%s: illegal option -- %c\n"
 msgstr "%s: ÎÅÄÏÐÕÓÔÉÍÙÊ ËÌÀÞ -- %c\n"
 
-#: src/getopt.c:785
+#: lib/getopt.c:785
 #, c-format
 msgid "%s: invalid option -- %c\n"
 msgstr "%s: ÎÅ×ÅÒÎÙÊ ËÌÀÞ -- %c\n"
 
 #. 1003.2 specifies the format of this message.
-#: src/getopt.c:815 src/getopt.c:945
+#: lib/getopt.c:815 lib/getopt.c:945
 #, c-format
 msgid "%s: option requires an argument -- %c\n"
 msgstr "%s: ËÌÀÞ ÄÏÌÖÅΠÉÓÐÏÌØÚÏ×ÁÔØÓÑ Ó ÁÒÇÕÍÅÎÔÏÍ -- %c\n"
 
-#: src/getopt.c:862
+#: lib/getopt.c:862
 #, fuzzy, c-format
 msgid "%s: option `-W %s' is ambiguous\n"
 msgstr "%s: ÎÅÏÄÎÏÚÎÁÞÎÙÊ ËÌÀÞ `%s'\n"
 
-#: src/getopt.c:880
+#: lib/getopt.c:880
 #, fuzzy, c-format
 msgid "%s: option `-W %s' doesn't allow an argument\n"
 msgstr "%s: ËÌÀÞ `--%s' ÄÏÌÖÅΠÉÓÐÏÌØÚÏ×ÁÔØÓÑ ÂÅÚ ÁÒÇÕÍÅÎÔÁ\n"
 
+#~ msgid "gotos"
+#~ msgstr "ÂÅÚÕÓÌÏ×ÎÙÈ ÐÅÒÅÈÏÄÏ×"
+
+#, fuzzy
+#~ msgid "fatal error: "
+#~ msgstr "ÆÁÔÁÌØÎÁÑ ÏÛÉÂËÁ: %s\n"
+
 #, fuzzy
 #~ msgid ""
 #~ "Usage: %s [-dhklntvyV] [-b file-prefix] [-o outfile] [-p name-prefix]\n"
index 1ed8e92..d03dfb5 100644 (file)
--- a/src/LR0.c
+++ b/src/LR0.c
@@ -28,6 +28,7 @@ Boston, MA 02111-1307, USA.  */
 #include "alloc.h"
 #include "gram.h"
 #include "state.h"
+#include "complain.h"
 
 
 extern char *nullable;
@@ -58,7 +59,6 @@ void insert_start_shift PARAMS((void));
 extern void initialize_closure PARAMS((int));
 extern void closure PARAMS((short *, int));
 extern void finalize_closure PARAMS((void));
-extern void toomany PARAMS((char *));
 
 static core *this_state;
 static core *last_state;
@@ -374,7 +374,7 @@ new_state (int symbol)
 #endif
 
   if (nstates >= MAXSHORT)
-    toomany("states");
+    fatal (_("too many states (max %d)"), MAXSHORT);
 
   isp1 = kernel_base[symbol];
   iend = kernel_end[symbol];
index e4fede4..fbf8aa5 100644 (file)
@@ -1,14 +1,6 @@
 ## Process this file with automake to produce Makefile.in -*-Makefile-*-
 AUTOMAKE_OPTIONS = 1.4 ../lib/ansi2knr
 
-bin_PROGRAMS = bison
-
-bison_SOURCES = LR0.c allocate.c closure.c conflicts.c derives.c       \
-    files.c getargs.c gram.c lalr.c lex.c main.c nullable.c output.c   \
-    print.c reader.c reduce.c symtab.c warshall.c
-
-EXTRA_bison_SOURCES = vmsgetargs.c
-
 DEFS = @DEFS@ \
   -DXPFILE=\"${datadir}/bison.simple\" \
   -DXPFILE1=\"${datadir}/bison.hairy\" \
@@ -16,7 +8,18 @@ DEFS = @DEFS@ \
 INCLUDES = -I../intl -I$(top_srcdir)/intl -I..
 LDADD = @INTLLIBS@ ../lib/libbison.a
 
-noinst_HEADERS = alloc.h files.h gram.h lex.h machine.h state.h        \
+bin_PROGRAMS = bison
+
+bison_SOURCES = LR0.c allocate.c closure.c complain.c conflicts.c      \
+    derives.c  \
+    files.c getargs.c gram.c lalr.c lex.c main.c nullable.c \
+    output.c   \
+    print.c reader.c reduce.c symtab.c warshall.c
+
+EXTRA_bison_SOURCES = vmsgetargs.c
+
+noinst_HEADERS = alloc.h complain.h files.h gram.h lex.h machine.h     \
+ state.h       \
  symtab.h system.h types.h
 
 data_DATA = bison.simple bison.hairy
diff --git a/src/complain.c b/src/complain.c
new file mode 100644 (file)
index 0000000..973ff29
--- /dev/null
@@ -0,0 +1,269 @@
+/* Declaration for error-reporting function for Bison.
+   Copyright (C) 2000 Free Software Foundation, Inc.
+
+   This program is free software; you can redistribute it and/or modify it
+   under the terms of the GNU General Public License as published by the
+   Free Software Foundation; either version 2, or (at your option) any
+   later version.
+
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   You should have received a copy of the GNU General Public License
+   along with this program; if not, write to the Free Software
+   Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+   USA.  */
+
+/* Based on error.c and error.h,
+   written by David MacKenzie <djm@gnu.ai.mit.edu>.  */
+
+#ifdef HAVE_CONFIG_H
+# include <config.h>
+#endif
+
+#include <stdio.h>
+
+#if HAVE_VPRINTF || HAVE_DOPRNT || _LIBC
+# if __STDC__
+#  include <stdarg.h>
+#  define VA_START(args, lastarg) va_start(args, lastarg)
+# else
+#  include <varargs.h>
+#  define VA_START(args, lastarg) va_start(args)
+# endif
+#else
+# define va_alist a1, a2, a3, a4, a5, a6, a7, a8
+# define va_dcl char *a1, *a2, *a3, *a4, *a5, *a6, *a7, *a8;
+#endif
+
+#if STDC_HEADERS || _LIBC
+# include <stdlib.h>
+# include <string.h>
+#else
+void exit ();
+#endif
+
+#include "complain.h"
+
+#ifndef _
+# define _(String) String
+#endif
+
+#ifdef _LIBC
+/* In the GNU C library, there is a predefined variable for this.  */
+# define program_name program_invocation_name
+#else /* not _LIBC */
+/* The calling program should define program_name and set it to the
+   name of the executing program.  */
+extern char *program_name;
+#endif
+
+/* This variable is incremented each time `warn' is called.  */
+unsigned int warn_message_count;
+
+/* This variable is incremented each time `complain' is called.  */
+unsigned int complain_message_count;
+
+/* Sometimes we want to have at most one error per line.  This
+   variable controls whether this mode is selected or not.  */
+int error_one_per_line;
+\f
+/*--------------------------------.
+| Report a warning, and proceed.  |
+`--------------------------------*/
+
+void
+#if defined VA_START && __STDC__
+warn (const char *message, ...)
+#else
+warn (message, va_alist)
+     char *message;
+     va_dcl
+#endif
+{
+#ifdef VA_START
+  va_list args;
+#endif
+
+  if (error_one_per_line)
+    {
+      static const char *old_infile;
+      static unsigned int old_lineno;
+
+      if (old_lineno == lineno &&
+         (infile == old_infile || !strcmp (old_infile, infile)))
+       /* Simply return and print nothing.  */
+       return;
+
+      old_infile = infile;
+      old_lineno = lineno;
+    }
+
+  fflush (stdout);
+  if (infile != NULL)
+    fprintf (stderr, "%s:%d: ", infile, lineno);
+  else
+    fprintf (stderr, "%s:", program_name);
+
+  fputs (_("warning: "), stderr);
+
+#ifdef VA_START
+  VA_START (args, message);
+  vfprintf (stderr, message, args);
+  va_end (args);
+#else
+  fprintf (stderr, message, a1, a2, a3, a4, a5, a6, a7, a8);
+#endif
+
+  ++warn_message_count;
+  putc ('\n', stderr);
+  fflush (stderr);
+}
+\f
+/*-----------------------------------------------------------.
+| An error has occurred, but we can proceed, and die later.  |
+`-----------------------------------------------------------*/
+
+void
+#if defined VA_START && __STDC__
+complain (const char *message, ...)
+#else
+complain (message, va_alist)
+     char *message;
+     va_dcl
+#endif
+{
+#ifdef VA_START
+  va_list args;
+#endif
+
+  if (error_one_per_line)
+    {
+      static const char *old_infile;
+      static unsigned int old_lineno;
+
+      if (old_lineno == lineno &&
+         (infile == old_infile || !strcmp (old_infile, infile)))
+       /* Simply return and print nothing.  */
+       return;
+
+      old_infile = infile;
+      old_lineno = lineno;
+    }
+
+  fflush (stdout);
+  if (infile != NULL)
+    fprintf (stderr, "%s:%d: ", infile, lineno);
+  else
+    fprintf (stderr, "%s:", program_name);
+
+#ifdef VA_START
+  VA_START (args, message);
+  vfprintf (stderr, message, args);
+  va_end (args);
+#else
+  fprintf (stderr, message, a1, a2, a3, a4, a5, a6, a7, a8);
+#endif
+
+  ++complain_message_count;
+  putc ('\n', stderr);
+  fflush (stderr);
+}
+\f
+/*-------------------------------------------------.
+| A severe error has occurred, we cannot proceed.  |
+`-------------------------------------------------*/
+
+void
+#if defined VA_START && __STDC__
+fatal (const char *message, ...)
+#else
+fatal (message, va_alist)
+     char *message;
+     va_dcl
+#endif
+{
+#ifdef VA_START
+  va_list args;
+#endif
+
+  fflush (stdout);
+  if (infile != NULL)
+    fprintf (stderr, "%s:%d: ", infile, lineno);
+  else
+    fprintf (stderr, "%s:", program_name);
+
+  fputs (_("fatal error: "), stderr);
+
+#ifdef VA_START
+  VA_START (args, message);
+  vfprintf (stderr, message, args);
+  va_end (args);
+#else
+  fprintf (stderr, message, a1, a2, a3, a4, a5, a6, a7, a8);
+#endif
+  putc ('\n', stderr);
+  fflush (stderr);
+  exit (1);
+}
+\f
+/*------------------------------------------------------------------.
+| A severe error has occurred, we cannot proceed. Exit with STATUS, |
+| and report the error message of the errno ERRNUM.                 |
+`------------------------------------------------------------------*/
+
+void
+#if defined VA_START && __STDC__
+error (int status, int errnum,
+       const char *message, ...)
+#else
+error (status, errnum, message, va_alist)
+     int status;
+     int errnum;
+     char *message;
+     va_dcl
+#endif
+{
+#ifdef VA_START
+  va_list args;
+#endif
+
+  fflush (stdout);
+  if (infile != NULL)
+    fprintf (stderr, "%s:%d: ", infile, lineno);
+  else
+    fprintf (stderr, "%s:", program_name);
+
+  fputs (_("fatal error: "), stderr);
+
+#ifdef VA_START
+  VA_START (args, message);
+  vfprintf (stderr, message, args);
+  va_end (args);
+#else
+  fprintf (stderr, message, a1, a2, a3, a4, a5, a6, a7, a8);
+#endif
+
+  if (errnum)
+    {
+#if defined HAVE_STRERROR_R || _LIBC
+      char errbuf[1024];
+# if HAVE_WORKING_STRERROR_R || _LIBC
+      fprintf (stderr, ": %s", __strerror_r (errnum, errbuf, sizeof errbuf));
+# else
+      /* Don't use __strerror_r's return value because on some systems
+        (at least DEC UNIX 4.0[A-D]) strerror_r returns `int'.  */
+      __strerror_r (errnum, errbuf, sizeof errbuf);
+      fprintf (stderr, ": %s", errbuf);
+# endif
+#else
+      fprintf (stderr, ": %s", strerror (errnum));
+#endif
+    }
+  putc ('\n', stderr);
+  fflush (stderr);
+  if (status)
+    exit (status);
+}
diff --git a/src/complain.h b/src/complain.h
new file mode 100644 (file)
index 0000000..81f4e6c
--- /dev/null
@@ -0,0 +1,75 @@
+/* Declaration for error-reporting function for Bison.
+   Copyright (C) 2000 Free Software Foundation, Inc.
+
+   This program is free software; you can redistribute it and/or modify it
+   under the terms of the GNU General Public License as published by the
+   Free Software Foundation; either version 2, or (at your option) any
+   later version.
+
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   You should have received a copy of the GNU General Public License
+   along with this program; if not, write to the Free Software
+   Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+   USA.  */
+
+#ifndef COMPLAIN_H_
+#define COMPLAIN_H_ 1
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#if defined (__STDC__) && __STDC__
+
+/* Informative messages, but we proceed. */
+
+extern void warn (const char *format, ...)
+     __attribute__ ((__format__ (__printf__, 1, 2)));
+
+/* Something bad happen, but let's continue and die later. */
+
+extern void complain (const char *format, ...)
+     __attribute__ ((__format__ (__printf__, 1, 2)));
+
+/* Something bad happen and we die now. */
+
+extern void fatal (const char *format, ...)
+     __attribute__ ((__format__ (__printf__, 1, 2)));
+
+/* Print a message with `fprintf (stderr, FORMAT, ...)';
+   if ERRNUM is nonzero, follow it with ": " and strerror (ERRNUM).
+   If STATUS is nonzero, terminate the program with `exit (STATUS)'.  */
+
+extern void error (int status, int errnum,
+                  const char *format, ...)
+     __attribute__ ((__format__ (__printf__, 3, 4)));
+
+#else
+void warn ();
+void complain ();
+void error ();
+#endif
+
+/* Position in the current input file. */
+extern char *infile;
+extern int lineno;
+
+/* This variable is incremented each time `warn' is called.  */
+extern unsigned int warn_message_count;
+
+/* This variable is incremented each time `complain' is called.  */
+extern unsigned int complain_message_count;
+
+/* Sometimes we want to have at most one error per line.  This
+   variable controls whether this mode is selected or not.  */
+extern int error_one_per_line;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* !COMPLAIN_H_ */
index e8556a2..f77df45 100644 (file)
@@ -50,6 +50,7 @@ Boston, MA 02111-1307, USA.  */
 #include "files.h"
 #include "alloc.h"
 #include "gram.h"
+#include "complain.h"
 
 FILE *finput = NULL;
 FILE *foutput = NULL;
@@ -78,14 +79,12 @@ extern int noparserflag;
 
 extern char    *mktemp();      /* So the compiler won't complain */
 extern char    *getenv();
-extern void    perror();
 
 char *stringappend PARAMS((char *, int, char *));
 void openfiles PARAMS((void));
 void open_extra_files PARAMS((void));
 FILE *tryopen PARAMS((char *, char *));        /* This might be a good idea */
 int tryclose PARAMS((FILE *));
-void done PARAMS((int));
 
 extern char *program_name;
 extern int verboseflag;
@@ -231,7 +230,7 @@ openfiles (void)
 
   finput = tryopen(infile, "r");
 
-  if (! noparserflag) 
+  if (! noparserflag)
     {
       filename = getenv("BISON_SIMPLE");
 #ifdef MSDOS
@@ -266,7 +265,7 @@ openfiles (void)
       /* use permanent name for actions file */
       actfile = stringappend(name_base, short_base_length, ".act");
       faction = tryopen(actfile, "w");
-    } 
+    }
 
 #ifdef MSDOS
   if (! noparserflag)
@@ -338,7 +337,7 @@ open_extra_files (void)
 
   tryclose(fparser);
 
-  if (! noparserflag) 
+  if (! noparserflag)
     {
       filename = (char *) getenv ("BISON_HAIRY");
 #ifdef MSDOS
@@ -368,20 +367,17 @@ open_extra_files (void)
 
 }
 
-       /* JF to make file opening easier.  This func tries to open file
-          NAME with mode MODE, and prints an error message if it fails. */
+/* JF to make file opening easier.  This func tries to open file
+   NAME with mode MODE, and prints an error message if it fails. */
 FILE *
 tryopen (char *name, char *mode)
 {
   FILE *ptr;
 
-  ptr = fopen(name, mode);
-  if (ptr == NULL)
-    {
-      fprintf(stderr, "%s: ", program_name);
-      perror(name);
-      done(2);
-    }
+  ptr = fopen (name, mode);
+  if (!ptr)
+    error (2, errno, _("cannot open file `%s'"), name);
+
   return ptr;
 }
 
@@ -395,16 +391,13 @@ tryclose (FILE *ptr)
 
   result = fclose (ptr);
   if (result == EOF)
-    {
-      fprintf (stderr, "%s: ", program_name);
-      perror ("fclose");
-      done (2);
-    }
+    error (2, errno, _("cannot close file"));
+
   return result;
 }
 
 void
-done (int k)
+done (void)
 {
   tryclose(faction);
   tryclose(fattrs);
@@ -413,8 +406,8 @@ done (int k)
   tryclose(fparser);
   tryclose(foutput);
 
-       /* JF write out the output file */
-  if (k == 0 && ftable)
+  /* JF write out the output file */
+  if (!complain_message_count && ftable)
     {
       FILE *ftmp;
       register int c;
@@ -445,8 +438,10 @@ done (int k)
     delete(tmpattrsfile);
   if (ftable)
     delete(tmptabfile);
-  if (k==0) sys$exit(SS$_NORMAL);
-  sys$exit(SS$_ABORT);
+/* Don't call exit again, we're in atexit ().
+  if (!complain_message_count)
+    sys$exit(SS$_NORMAL);
+  sys$exit(SS$_ABORT); */
 #else
 #if (defined (MSDOS) || (defined(_WIN32) && !defined(__CYGWIN32__)))
   if (actfile && ! noparserflag) unlink(actfile);
@@ -454,6 +449,7 @@ done (int k)
   if (tmptabfile) unlink(tmptabfile);
   if (tmpdefsfile) unlink(tmpdefsfile);
 #endif /* MSDOS || (_WIN32 && !__CYGWIN32__) */
-  exit(k);
+/* Don't call exit again, we're in atexit ().
+  exit (complain_message_count ? 1 : 0); */
 #endif /* not VMS, or __VMS_POSIX */
 }
index 6bc1e4e..3886d7c 100644 (file)
@@ -1,22 +1,22 @@
 /* File names and variables for bison,
-   Copyright (C) 1984, 1989 Free Software Foundation, Inc.
+   Copyright (C) 1984, 1989, 2000 Free Software Foundation, Inc.
 
-This file is part of Bison, the GNU Compiler Compiler.
+   This file is part of Bison, the GNU Compiler Compiler.
 
-Bison is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
-any later version.
+   Bison is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 2, or (at your option)
+   any later version.
 
-Bison is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-GNU General Public License for more details.
+   Bison is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
 
-You should have received a copy of the GNU General Public License
-along with Bison; see the file COPYING.  If not, write to
-the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-Boston, MA 02111-1307, USA.  */
+   You should have received a copy of the GNU General Public License
+   along with Bison; see the file COPYING.  If not, write to
+   the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+   Boston, MA 02111-1307, USA.  */
 
 
 /* These two should be pathnames for opening the sample parser files.
@@ -45,9 +45,12 @@ extern char *spec_name_prefix; /* for -a, from getargs.c */
 extern char *spec_file_prefix;
 
 extern char *infile;
+extern int lineno;
 extern char *outfile;
 extern char *defsfile;
 extern char *tabfile;
 extern char *attrsfile;
 extern char *guardfile;
 extern char *actfile;
+
+void done PARAMS((void));
index 647c0f7..3015f8b 100644 (file)
@@ -66,8 +66,8 @@ usage (FILE *stream)
 {
   /* Some efforts were made to ease the translators' task, please
      continue.  */
-  fprintf (stream, _("\
-GNU bison generates parsers for LALR(1) grammars.\n"));
+  fputs (_("\
+GNU bison generates parsers for LALR(1) grammars.\n"), stream);
   putc ('\n', stream);
 
   fprintf (stream, _("\
@@ -80,14 +80,14 @@ for the equivalent short option also.  Similarly for optional arguments.\n"),
         stream);
   putc ('\n', stream);
 
-  fprintf (stream, _("\
+  fputs (_("\
 Operation modes:\n\
   -h, --help      display this help and exit\n\
   -V, --version   output version information and exit\n\
-  -y, --yacc      emulate POSIX yacc\n"));
+  -y, --yacc      emulate POSIX yacc\n"), stream);
   putc ('\n', stream);
 
-  fprintf (stream, _("\
+  fputs (_("\
 Parser:\n\
   -t, --debug                instrument the parser for debugging\n\
   -p, --name-prefix=PREFIX   prepend PREFIX to the external symbols\n\
@@ -95,20 +95,19 @@ Parser:\n\
   -n, --no-parser            generate the tables only\n\
   -r, --raw                  number the tokens from 3\n\
   -k, --token-table          include a table of token names\n\
-"));
+"), stream);
   putc ('\n', stream);
 
-  fprintf (stream, _("\
+  fputs (_("\
 Output:\n\
   -d, --defines              also produce a header file\n\
   -v, --verbose              also produce an explanation of the automaton\n\
   -b, --file-prefix=PREFIX   specify a PREFIX for output files\n\
-  -o, --output-file=FILE     leave output to FILE\n"));
+  -o, --output-file=FILE     leave output to FILE\n"), stream);
   putc ('\n', stream);
 
-  fprintf (stream, _("\
-Report bugs to <bug-bison@gnu.org>.\n"),
-          program_name);
+  fputs (_("\
+Report bugs to <bug-bison@gnu.org>.\n"), stream);
 }
 
 void
index 117f2b9..767c646 100644 (file)
@@ -24,7 +24,7 @@ Boston, MA 02111-1307, USA.  */
 
 lalr(), the entry point, builds these data structures:
 
-goto_map, from_state and to_state 
+goto_map, from_state and to_state
  record each shift transition which accepts a variable (a nonterminal).
 ngotos is the number of such transitions.
 from_state[t] is the state number which a transition leads from
@@ -39,7 +39,7 @@ The elements of LAruleno that apply to state s are those from
  lookaheads[s] through lookaheads[s+1]-1.
 Each element of LAruleno is a rule number.
 
-If lr is the length of LAruleno, then a number from 0 to lr-1 
+If lr is the length of LAruleno, then a number from 0 to lr-1
 can specify both a rule and a state where the rule might be applied.
 
 LA is a lr by ntokens matrix of bits.
@@ -55,7 +55,7 @@ If LA[l, i] and LA[l, j] are both 1 for i != j, it is a conflict.
 #include "state.h"
 #include "alloc.h"
 #include "gram.h"
-
+#include "complain.h"
 
 extern short **derives;
 extern char *nullable;
@@ -92,7 +92,6 @@ void compute_lookaheads PARAMS((void));
 void digraph PARAMS((short **));
 void traverse PARAMS((register int));
 
-extern void toomany PARAMS((char *));
 extern void berror PARAMS((char *));
 
 static int infinity;
@@ -291,7 +290,7 @@ set_goto_map (void)
          if (ISTOKEN(symbol)) break;
 
          if (ngotos == MAXSHORT)
-           toomany(_("gotos"));
+           fatal (_("too many gotos (max %d)"), MAXSHORT);
 
          ngotos++;
          goto_map[symbol]++;
@@ -413,7 +412,7 @@ initialize_F (void)
              if (nullable[symbol])
                edge[nedges++] = map_goto(stateno, symbol);
            }
-       
+
          if (nedges)
            {
              reads[i] = rp = NEW2(nedges + 1, short);
index 3a51c97..cf4f7e5 100644 (file)
--- a/src/lex.c
+++ b/src/lex.c
@@ -1,22 +1,22 @@
 /* Token-reader for Bison's input parser,
-   Copyright (C) 1984, 1986, 1989, 1992 Free Software Foundation, Inc.
+   Copyright (C) 1984, 1986, 1989, 1992, 2000 Free Software Foundation, Inc.
 
-This file is part of Bison, the GNU Compiler Compiler.
+   This file is part of Bison, the GNU Compiler Compiler.
 
-Bison is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
-any later version.
+   Bison is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 2, or (at your option)
+   any later version.
 
-Bison is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-GNU General Public License for more details.
+   Bison is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
 
-You should have received a copy of the GNU General Public License
-along with Bison; see the file COPYING.  If not, write to
-the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-Boston, MA 02111-1307, USA.  */
+   You should have received a copy of the GNU General Public License
+   along with Bison; see the file COPYING.  If not, write to
+   the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+   Boston, MA 02111-1307, USA.  */
 
 
 /*
@@ -33,6 +33,7 @@ Boston, MA 02111-1307, USA.  */
 #include "symtab.h"
 #include "lex.h"
 #include "alloc.h"
+#include "complain.h"
 
 /* flags set by % directives */
 extern int definesflag;        /* for -d */
@@ -47,7 +48,6 @@ extern char *spec_name_prefix;        /* for -p */
 extern char *spec_file_prefix; /* for -b */
 /*spec_outfile is declared in files.h, for -o */
 
-extern int lineno;
 extern int translations;
 
 void init_lex PARAMS((void));
@@ -61,10 +61,6 @@ int parse_percent_token PARAMS((void));
 
 /* functions from main.c */
 extern char *printable_version PARAMS((int));
-extern void fatal PARAMS((char *));
-extern void warn PARAMS((char *));
-extern void warni PARAMS((char *, int));
-extern void warns PARAMS((char *, char *));
 
 /* Buffer for storing the current token.  */
 char *token_buffer;
@@ -116,7 +112,7 @@ skip_white_space (void)
          c = getc(finput);
          if (c != '*' && c != '/')
            {
-             warn(_("unexpected `/' found and ignored"));
+             complain (_("unexpected `/' found and ignored"));
              break;
            }
          cplus_comment = (c == '/');
@@ -145,7 +141,7 @@ skip_white_space (void)
                  c = getc(finput);
                }
              else if (c == EOF)
-               fatal(_("unterminated comment"));
+               fatal (_("unterminated comment"));
              else
                c = getc(finput);
            }
@@ -173,7 +169,7 @@ safegetc (FILE *f)
 {
   register int c = getc(f);
   if (c == EOF)
-    fatal(_("Unexpected end of file"));
+    fatal (_("unexpected end of file"));
   return c;
 }
 
@@ -194,7 +190,7 @@ literalchar (char **pp, int *pcode, char term)
   c = safegetc(finput);
   if (c == '\n')
     {
-      warn(_("unescaped newline in constant"));
+      complain (_("unescaped newline in constant"));
       ungetc(c, finput);
       code = '?';
       wasquote = 1;
@@ -226,7 +222,8 @@ literalchar (char **pp, int *pcode, char term)
              code = (code * 8) + (c - '0');
              if (code >= 256 || code < 0)
                {
-                 warni(_("octal value outside range 0...255: `\\%o'"), code);
+                 complain (_("octal value outside range 0...255: `\\%o'"),
+                           code);
                  code &= 0xFF;
                  break;
                }
@@ -250,7 +247,8 @@ literalchar (char **pp, int *pcode, char term)
                break;
              if (code >= 256 || code<0)
                {
-                 warni(_("hexadecimal value above 255: `\\x%x'"), code);
+                 complain (_("hexadecimal value above 255: `\\x%x'"),
+                           code);
                  code &= 0xFF;
                  break;
                }
@@ -260,8 +258,8 @@ literalchar (char **pp, int *pcode, char term)
        }
       else
        {
-         warns (_("unknown escape sequence: `\\' followed by `%s'"),
-                printable_version(c));
+         complain (_("unknown escape sequence: `\\' followed by `%s'"),
+                   printable_version(c));
          code = '?';
        }
     } /* has \ */
@@ -393,7 +391,7 @@ lex (void)
        c = getc(finput);
        if (c != '\'')
          {
-           warn(_("use \"...\" for multi-character literal tokens"));
+           complain (_("use \"...\" for multi-character literal tokens"));
            while (1)
              {
                dp = discard;
@@ -472,10 +470,10 @@ lex (void)
       while (c != '>')
        {
          if (c == EOF)
-           fatal(_("unterminated type name at end of file"));
+           fatal (_("unterminated type name at end of file"));
          if (c == '\n')
            {
-             warn(_("unterminated type name"));
+             complain (_("unterminated type name"));
              ungetc(c, finput);
              break;
            }
index 58939d9..850076b 100644 (file)
 #include <stdio.h>
 #include "system.h"
 #include "machine.h"   /* for MAXSHORT */
+#include "files.h"
+#include "complain.h"
 
-extern int lineno;
 extern int verboseflag;
-extern char *infile;
 
 /* Nonzero means failure has been detected; don't write a parser file.  */
 int failure;
@@ -34,14 +34,6 @@ int failure;
 char *program_name;
 
 char *printable_version PARAMS((int));
-char *int_to_string PARAMS((int));
-void fatal PARAMS((char *));
-void fatals PARAMS((char *, char *));
-void warn PARAMS((char *));
-void warni PARAMS((char *, int));
-void warns PARAMS((char *, char *));
-void warnss PARAMS((char *, char *, char *));
-void warnsss PARAMS((char *, char *, char *, char *));
 void toomany PARAMS((char *));
 void berror PARAMS((char *));
 
@@ -57,7 +49,6 @@ extern void initialize_conflicts PARAMS((void));
 extern void verbose PARAMS((void));
 extern void terse PARAMS((void));
 extern void output PARAMS((void));
-extern void done PARAMS((int));
 
 
 /* VMS complained about using `int'.  */
@@ -70,17 +61,20 @@ main (int argc, char *argv[])
   bindtextdomain (PACKAGE, LOCALEDIR);
   textdomain (PACKAGE);
 
-  failure = 0;
   lineno = 0;
   getargs(argc, argv);
+
+  /* Be ready to clean up if we exit.*/
+  atexit (done);
+
   openfiles();
 
   /* read the input.  Copy some parts of it to fguard, faction, ftable and fattrs.
      In file reader.c.
      The other parts are recorded in the grammar; see gram.h.  */
-  reader();
-  if (failure)
-       done(failure);
+  reader ();
+  if (complain_message_count)
+    exit (1);
 
   /* find useless nonterminals and productions and reduce the grammar.  In
      file reduce.c */
@@ -110,8 +104,9 @@ main (int argc, char *argv[])
 
   /* output the tables and the parser to ftable.  In file output. */
   output();
-  done(failure);
-  return failure;
+  done ();
+
+  exit (complain_message_count ? 1 : 0);
 }
 \f
 /* functions to report errors which prevent a parser from being generated */
@@ -134,137 +129,11 @@ printable_version (int c)
   return buf;
 }
 
-/* Generate a string from the integer I.
-   Return a ptr to internal memory containing the string.  */
-
-char *
-int_to_string (int i)
-{
-  static char buf[20];
-  sprintf(buf, "%d", i);
-  return buf;
-}
-
-/* Display filename and lino if available.  */
-
-static void
-banner (void)
-{
-  if (infile == 0)
-    fprintf(stderr, "%s: ", program_name);
-  else
-    fprintf(stderr, "%s:%d: ", infile, lineno);
-}
-
-static void
-fatal_banner (void)
-{
-  banner ();
-  fputs (_("fatal error: "), stderr);
-}
-
-/* Print the message S for a fatal error.  */
-
-void
-fatal (char *s)
-{
-  fatal_banner ();
-  fputs (s, stderr);
-  fputc ('\n', stderr);
-  done (1);
-}
-
-
-/* Print a message for a fatal error.  Use FMT to construct the message
-   and incorporate string X1.  */
-
-void
-fatals (char *fmt, char *x1)
-{
-  fatal_banner ();
-  fprintf (stderr, fmt, x1);
-  fputc ('\n', stderr);
-  done (1);
-}
-
-static void
-warn_banner (void)
-{
-  banner ();
-  failure = 1;
-}
-
-/* Print a warning message S.  */
-
-void
-warn (char *s)
-{
-  warn_banner ();
-  fputs (s, stderr);
-  fputc ('\n', stderr);
-}
-
-/* Print a warning message containing the string for the integer X1.
-   The message is given by the format FMT.  */
-
-void
-warni (char *fmt, int x1)
-{
-  warn_banner ();
-  fprintf (stderr, fmt, x1);
-  fputc ('\n', stderr);
-}
-
-/* Print a warning message containing the string X1.
-   The message is given by the format FMT.  */
-
-void
-warns (char *fmt, char *x1)
-{
-  warn_banner ();
-  fprintf (stderr, fmt, x1);
-  fputc ('\n', stderr);
-}
-
-/* Print a warning message containing the two strings X1 and X2.
-       The message is given by the format FMT.  */
-
-void
-warnss (char *fmt, char *x1, char *x2)
-{
-  warn_banner ();
-  fprintf (stderr, fmt, x1, x2);
-  fputc ('\n', stderr);
-}
-
-/* Print a warning message containing the 3 strings X1, X2, X3.
-   The message is given by the format FMT.  */
-
-void
-warnsss (char *fmt, char *x1, char *x2, char *x3)
-{
-  warn_banner ();
-  fprintf (stderr, fmt, x1, x2, x3);
-  fputc ('\n', stderr);
-}
-
-/* Print a message for the fatal occurence of more than MAXSHORT
-   instances of whatever is denoted by the string S.  */
-
-void
-toomany (char *s)
-{
-  fatal_banner ();
-  fprintf (stderr, _("too many %s (max %d)"), s, MAXSHORT);
-  fputc ('\n', stderr);
-  done (1);
-}
-
 /* Abort for an internal error denoted by string S.  */
 
 void
 berror (char *s)
 {
-  fprintf(stderr, _("%s: internal error: %s\n"), program_name, s);
+  fprintf (stderr, _("%s: internal error: %s\n"), program_name, s);
   abort();
 }
index efc9577..f7e2188 100644 (file)
@@ -110,6 +110,7 @@ YYNTBASE = ntokens.
 #include "files.h"
 #include "gram.h"
 #include "state.h"
+#include "complain.h"
 
 
 extern int debugflag;
@@ -133,7 +134,6 @@ extern char *consistent;
 extern short *goto_map;
 extern short *from_state;
 extern short *to_state;
-extern int lineno;
 
 void output_headers PARAMS((void));
 void output_trailers PARAMS((void));
@@ -164,8 +164,6 @@ int matching_state PARAMS((int));
 int pack_vector PARAMS((int));
 
 extern void berror PARAMS((char *));
-extern void fatals PARAMS((char *, char *));
-extern char *int_to_string PARAMS((int));
 extern void reader_output_yylsp PARAMS((FILE *));
 
 static int nvectors;
@@ -1198,7 +1196,7 @@ pack_vector (int vector)
        {
          loc = j + from[k];
          if (loc > MAXTABLE)
-           fatals(_("maximum table size (%s) exceeded"), int_to_string(MAXTABLE));
+           fatal (_("maximum table size (%d) exceeded"), MAXTABLE);
 
          if (table[loc] != 0)
            ok = 0;
index 115440d..3b11ce7 100644 (file)
@@ -35,6 +35,7 @@
 #include "lex.h"
 #include "gram.h"
 #include "machine.h"
+#include "complain.h"
 
 #define        LTYPESTR        "\
 \n\
@@ -61,7 +62,6 @@ typedef\n\
 /* Number of slots allocated (but not necessarily used yet) in `rline'  */
 int rline_allocated;
 
-extern char *program_name;
 extern int definesflag;
 extern int nolinesflag;
 extern int noparserflag;
@@ -79,17 +79,8 @@ extern void output_headers PARAMS((void));
 extern void output_trailers PARAMS((void));
 extern void free_symtab PARAMS((void));
 extern void open_extra_files PARAMS((void));
-extern char *int_to_string PARAMS((int));
 extern char *printable_version PARAMS((int));
-extern void fatal PARAMS((char *));
-extern void fatals PARAMS((char *, char *));
-extern void warn PARAMS((char *));
-extern void warni PARAMS((char *, int));
-extern void warns PARAMS((char *, char *));
-extern void warnss PARAMS((char *, char *, char *));
-extern void warnsss PARAMS((char *, char *, char *, char *));
 extern void unlex PARAMS((int));
-extern void done PARAMS((int));
 
 extern int skip_white_space PARAMS((void));
 extern int parse_percent_token PARAMS((void));
@@ -160,9 +151,9 @@ skip_to_char (int target)
 {
   int c;
   if (target == '\n')
-    warn(_("   Skipping to next \\n"));
+    complain (_("   Skipping to next \\n"));
   else
-    warni(_("   Skipping to next %c"), target);
+    complain (_("   Skipping to next %c"), target);
 
   do
     c = skip_white_space();
@@ -189,7 +180,7 @@ copy_string (FILE *finput, FILE *foutput, int match)
        fatal (_("unterminated string at end of file"));
       if (c == '\n')
        {
-         warn (_("unterminated string"));
+         complain (_("unterminated string"));
          ungetc (c, finput);
          c = match;            /* invent terminator */
          continue;
@@ -221,7 +212,6 @@ static inline void
 copy_comment (FILE *finput, FILE *foutput, int c)
 {
   int cplus_comment;
-  register int match;
   register int ended;
 
   cplus_comment = (c == '/');
@@ -431,15 +421,15 @@ read_declarations (void)
              break;
 
            default:
-             warns(_("unrecognized: %s"), token_buffer);
+             complain (_("unrecognized: %s"), token_buffer);
              skip_to_char('%');
          }
        }
       else if (c == EOF)
-        fatal(_("no input grammar"));
+        fatal (_("no input grammar"));
       else
        {
-         warns (_("unknown character: %s"), printable_version(c));
+         complain (_("unknown character: %s"), printable_version(c));
          skip_to_char('%');
        }
     }
@@ -490,7 +480,8 @@ copy_definition (void)
          break;
 
        case EOF:
-         fatal(_("unterminated `%{' definition"));
+         fatal ("%s",
+                _("unterminated `%{' definition"));
 
        default:
          putc(c, fattrs);
@@ -531,7 +522,7 @@ parse_token_decl (int what_is, int what_is_not)
       if (tmp_char == '%')
        return;
       if (tmp_char == EOF)
-       fatals ("Premature EOF after %s", token_buffer);
+       fatal (_("Premature EOF after %s"), token_buffer);
 
       token = lex();
       if (token == COMMA)
@@ -568,7 +559,7 @@ parse_token_decl (int what_is, int what_is_not)
          symbol = symval;
 
          if (symbol->class == what_is_not)
-           warns(_("symbol %s redefined"), symbol->tag);
+           complain (_("symbol %s redefined"), symbol->tag);
          symbol->class = what_is;
          if (what_is == SNTERM && oldclass != SNTERM)
            symbol->value = nvars++;
@@ -578,7 +569,7 @@ parse_token_decl (int what_is, int what_is_not)
              if (symbol->type_name == NULL)
                symbol->type_name = typename;
              else if (strcmp(typename, symbol->type_name) != 0)
-               warns(_("type redeclaration for %s"), symbol->tag);
+               complain (_("type redeclaration for %s"), symbol->tag);
            }
        }
       else if (symbol && token == NUMBER)
@@ -588,8 +579,8 @@ parse_token_decl (int what_is, int what_is_not)
         }
       else
        {
-         warnss(_("`%s' is invalid in %s"),
-               token_buffer,
+         complain (_("`%s' is invalid in %s"),
+                   token_buffer,
                (what_is == STOKEN) ? "%token" : "%nterm");
          skip_to_char('%');
        }
@@ -636,8 +627,8 @@ parse_thong_decl (void)
 
   if (token != IDENTIFIER)
     {
-      warns(_("unrecognized item %s, expected an identifier"),
-           token_buffer);
+      complain (_("unrecognized item %s, expected an identifier"),
+               token_buffer);
       skip_to_char('%');
       return;
     }
@@ -658,8 +649,8 @@ parse_thong_decl (void)
 
   if (token != IDENTIFIER || *symval->tag != '\"')
     {
-      warns(_("expected string constant instead of %s"),
-           token_buffer);
+      complain (_("expected string constant instead of %s"),
+               token_buffer);
       skip_to_char('%');
       return;
     }
@@ -674,15 +665,15 @@ parse_thong_decl (void)
 }
 
 
-/* parse what comes after %start */
+/* Parse what comes after %start */
 
 void
 parse_start_decl (void)
 {
   if (start_flag)
-    warn(_("multiple %start declarations"));
+    complain ("%s", _("multiple %start declarations"));
   if (lex() != IDENTIFIER)
-    warn(_("invalid %start declaration"));
+    complain ("%s", _("invalid %start declaration"));
   else
     {
       start_flag = 1;
@@ -702,7 +693,7 @@ parse_type_decl (void)
 
   if (lex() != TYPENAME)
     {
-      warn(_("%type declaration has no <typename>"));
+      complain ("%s", _("%type declaration has no <typename>"));
       skip_to_char('%');
       return;
     }
@@ -719,7 +710,7 @@ parse_type_decl (void)
       if (tmp_char == '%')
        return;
       if (tmp_char == EOF)
-       fatals ("Premature EOF after %s", token_buffer);
+       fatal (_("Premature EOF after %s"), token_buffer);
 
       t = lex();
 
@@ -734,12 +725,13 @@ parse_type_decl (void)
          if (symval->type_name == NULL)
            symval->type_name = name;
          else if (strcmp(name, symval->type_name) != 0)
-           warns(_("type redeclaration for %s"), symval->tag);
+           complain (_("type redeclaration for %s"), symval->tag);
 
          break;
 
        default:
-         warns(_("invalid %%type declaration due to item: `%s'"), token_buffer);
+         complain (_("invalid %%type declaration due to item: %s"),
+                   token_buffer);
          skip_to_char('%');
        }
     }
@@ -767,7 +759,7 @@ parse_assoc_decl (int assoc)
       if (tmp_char == '%')
        return;
       if (tmp_char == EOF)
-       fatals ("Premature EOF after %s", token_buffer);
+       fatal (_("Premature EOF after %s"), token_buffer);
 
       t = lex();
 
@@ -785,18 +777,18 @@ parse_assoc_decl (int assoc)
 
        case IDENTIFIER:
          if (symval->prec != 0)
-           warns(_("redefining precedence of %s"), symval->tag);
+           complain (_("redefining precedence of %s"), symval->tag);
          symval->prec = lastprec;
          symval->assoc = assoc;
          if (symval->class == SNTERM)
-           warns(_("symbol %s redefined"), symval->tag);
+           complain (_("symbol %s redefined"), symval->tag);
          symval->class = STOKEN;
          if (name)
            { /* record the type, if one is specified */
              if (symval->type_name == NULL)
                symval->type_name = name;
              else if (strcmp(name, symval->type_name) != 0)
-               warns(_("type redeclaration for %s"), symval->tag);
+               complain (_("type redeclaration for %s"), symval->tag);
            }
          break;
 
@@ -808,7 +800,7 @@ parse_assoc_decl (int assoc)
             }
           else
             {
-             warns(_("invalid text (%s) - number should be after identifier"),
+             complain (_("invalid text (%s) - number should be after identifier"),
                        token_buffer);
              skip_to_char('%');
             }
@@ -818,7 +810,7 @@ parse_assoc_decl (int assoc)
          return;
 
        default:
-         warns(_("unexpected item: %s"), token_buffer);
+         complain (_("unexpected item: %s"), token_buffer);
          skip_to_char('%');
        }
 
@@ -842,7 +834,7 @@ parse_union_decl (void)
   int cplus_comment;
 
   if (typed)
-    warn(_("multiple %union declarations"));
+    complain ("%s", _("multiple %union declarations"));
 
   typed = 1;
 
@@ -900,7 +892,7 @@ parse_union_decl (void)
                        }
                    }
                  if (c == EOF)
-                   fatal(_("unterminated comment at end of file"));
+                   fatal (_("unterminated comment at end of file"));
 
                  if (!cplus_comment && c == '*')
                    {
@@ -926,7 +918,7 @@ parse_union_decl (void)
 
        case '}':
          if (count == 0)
-           warn (_("unmatched close-brace (`}')"));
+           complain (_("unmatched close-brace (`}')"));
          count--;
          if (count <= 0)
            {
@@ -970,7 +962,7 @@ parse_expect_decl (void)
   ungetc (c, finput);
 
   if (count <= 0 || count > 10)
-       warn(_("argument of %expect is not an integer"));
+    complain ("%s", _("argument of %expect is not an integer"));
   expected_conflicts = atoi (buffer);
 }
 
@@ -1002,23 +994,22 @@ copy_at (FILE *finput, FILE *foutput, int stack_offset)
       yylsp_needed = 1;
     }
   else
-    warns (_("@%s is invalid"), printable_version (c));
+    complain (_("@%s is invalid"), printable_version (c));
 }
 
 
-/* Get the data type (alternative in the union) of the value for symbol n in rule rule.  */
+/* Get the data type (alternative in the union) of the value for
+   symbol n in rule rule.  */
 
 char *
 get_type_name (int n, symbol_list *rule)
 {
-  static char *msg = N_("invalid $ value");
-
   register int i;
   register symbol_list *rp;
 
   if (n < 0)
     {
-      warn(_(msg));
+      complain (_("invalid $ value"));
       return NULL;
     }
 
@@ -1030,7 +1021,7 @@ get_type_name (int n, symbol_list *rule)
       rp = rp->next;
       if (rp == NULL || rp->sym == NULL)
        {
-         warn(_(msg));
+         complain (_("invalid $ value"));
          return NULL;
        }
       i++;
@@ -1089,7 +1080,7 @@ copy_guard (symbol_list *rule, int stack_offset)
            count--;
          else
            {
-             warn(_("unmatched right brace (`}')"));
+             complain (_("unmatched right brace (`}')"));
              c = getc(finput); /* skip it */
            }
           break;
@@ -1136,7 +1127,8 @@ copy_guard (symbol_list *rule, int stack_offset)
              if (type_name)
                fprintf(fguard, ".%s", type_name);
              if(!type_name && typed)
-               warns(_("$$ of `%s' has no declared type"), rule->sym->tag);
+               complain (_("$$ of `%s' has no declared type"),
+                         rule->sym->tag);
            }
          else if (isdigit(c) || c == '-')
            {
@@ -1151,12 +1143,12 @@ copy_guard (symbol_list *rule, int stack_offset)
              if (type_name)
                fprintf(fguard, ".%s", type_name);
              if (!type_name && typed)
-               warnss (_("$%s of `%s' has no declared type"),
-                       int_to_string(n), rule->sym->tag);
+               complain (_("$%d of `%s' has no declared type"),
+                         n, rule->sym->tag);
              continue;
            }
          else
-           warns(_("$%s is invalid"), printable_version(c));
+           complain (_("$%s is invalid"), printable_version (c));
          break;
 
        case '@':
@@ -1164,7 +1156,8 @@ copy_guard (symbol_list *rule, int stack_offset)
          break;
 
        case EOF:
-         fatal (_("unterminated %%guard clause"));
+         fatal ("%s",
+                _("unterminated %guard clause"));
 
        default:
          putc (c, fguard);
@@ -1274,8 +1267,8 @@ copy_action (symbol_list *rule, int stack_offset)
                  if (type_name)
                    fprintf(faction, ".%s", type_name);
                  if(!type_name && typed)
-                   warns(_("$$ of `%s' has no declared type"),
-                         rule->sym->tag);
+                   complain (_("$$ of `%s' has no declared type"),
+                             rule->sym->tag);
                }
              else if (isdigit(c) || c == '-')
                {
@@ -1290,12 +1283,12 @@ copy_action (symbol_list *rule, int stack_offset)
                  if (type_name)
                    fprintf(faction, ".%s", type_name);
                  if(!type_name && typed)
-                   warnss(_("$%s of `%s' has no declared type"),
-                               int_to_string(n), rule->sym->tag);
+                   complain (_("$%d of `%s' has no declared type"),
+                             n, rule->sym->tag);
                  continue;
                }
              else
-               warns(_("$%s is invalid"), printable_version(c));
+               complain (_("$%s is invalid"), printable_version (c));
 
              break;
 
@@ -1304,7 +1297,7 @@ copy_action (symbol_list *rule, int stack_offset)
              break;
 
            case EOF:
-             fatal(_("unmatched `{'"));
+             fatal (_("unmatched `{'"));
 
            default:
              putc(c, faction);
@@ -1390,14 +1383,14 @@ readgram (void)
              t = lex();
              if (t != COLON)
                {
-                 warn(_("ill-formed rule: initial symbol not followed by colon"));
+                 complain (_("ill-formed rule: initial symbol not followed by colon"));
                  unlex(t);
                }
            }
 
          if (nrules == 0 && t == BAR)
            {
-             warn(_("grammar starts with vertical bar"));
+             complain (_("grammar starts with vertical bar"));
              lhs = symval;     /* BOGUS: use a random symval */
            }
          /* start a new rule and record its lhs.  */
@@ -1428,7 +1421,7 @@ readgram (void)
              nvars++;
            }
          else if (lhs->class == STOKEN)
-           warns(_("rule given for %s, which is a token"), lhs->tag);
+           complain (_("rule given for %s, which is a token"), lhs->tag);
 
          /* read the rhs of the rule.  */
 
@@ -1526,7 +1519,7 @@ readgram (void)
 
          if (t == PREC)
            {
-             warn(_("two @prec's in a row"));
+             complain (_("two @prec's in a row"));
              t = lex();
              crule->ruleprec = symval;
              t = lex();
@@ -1534,7 +1527,8 @@ readgram (void)
          if (t == GUARD)
            {
              if (! semantic_parser)
-               warn(_("%%guard present but %%semantic_parser not specified"));
+               complain ("%s",
+                         _("%guard present but %semantic_parser not specified"));
 
              copy_guard(crule, rulelength);
              t = lex();
@@ -1543,13 +1537,13 @@ readgram (void)
            {
                /* This case never occurs -wjh */
              if (actionflag)
-               warn(_("two actions at end of one rule"));
+               complain (_("two actions at end of one rule"));
              copy_action(crule, rulelength);
              actionflag = 1;
              xactions++;       /* -wjh */
              t = lex();
            }
-         /* If $$ is being set in default way, warn if any type
+         /* If $$ is being set in default way, report if any type
             mismatch.  */
          else if (!xactions
                   && first_rhs
@@ -1558,13 +1552,13 @@ readgram (void)
              if (lhs->type_name == 0
                  || first_rhs->type_name == 0
                  || strcmp(lhs->type_name,first_rhs->type_name))
-               warnss(_("type clash (`%s' `%s') on default action"),
-                      lhs->type_name ? lhs->type_name : "",
-                      first_rhs->type_name ? first_rhs->type_name : "");
+               complain (_("type clash (`%s' `%s') on default action"),
+                         lhs->type_name ? lhs->type_name : "",
+                            first_rhs->type_name ? first_rhs->type_name : "");
            }
          /* Warn if there is no default for $$ but we need one.  */
          else if (!xactions && !first_rhs && lhs->type_name != 0)
-           warn(_("empty rule for typed nonterminal, and no action"));
+           complain (_("empty rule for typed nonterminal, and no action"));
          if (t == SEMICOLON)
            t = lex();
        }
@@ -1608,7 +1602,7 @@ readgram (void)
 
       else
        {
-         warns(_("invalid input: %s"), token_buffer);
+         complain (_("invalid input: %s"), token_buffer);
          t = lex();
        }
     }
@@ -1616,10 +1610,10 @@ readgram (void)
   /* grammar has been read.  Do some checking */
 
   if (nsyms > MAXSHORT)
-    fatals(_("too many symbols (tokens plus nonterminals); maximum %s"),
-          int_to_string(MAXSHORT));
+    fatal (_("too many symbols (tokens plus nonterminals); maximum %d"),
+          MAXSHORT);
   if (nrules == 0)
-    fatal(_("no rules in the input grammar"));
+    fatal (_("no rules in the input grammar"));
 
   if (typed == 0       /* JF put out same default YYSTYPE as YACC does */
       && !value_components_used)
@@ -1637,8 +1631,8 @@ readgram (void)
   for (bp = firstsymbol; bp; bp = bp->next)
     if (bp->class == SUNKNOWN)
       {
-       warns(_("symbol %s is used, but is not defined as a token and has no rules"),
-                       bp->tag);
+       complain (_("symbol %s is used, but is not defined as a token and has no rules"),
+                 bp->tag);
        bp->class = SNTERM;
        bp->value = nvars++;
       }
@@ -1676,7 +1670,7 @@ get_type (void)
 
   if (t != TYPENAME)
     {
-      warn(_("ill-formed %type declaration"));
+      complain (_("ill-formed %type declaration"));
       return t;
     }
 
@@ -1700,7 +1694,7 @@ get_type (void)
          if (symval->type_name == NULL)
            symval->type_name = name;
          else if (strcmp(name, symval->type_name) != 0)
-           warns(_("type redeclaration for %s"), symval->tag);
+           complain (_("type redeclaration for %s"), symval->tag);
 
          break;
 
@@ -1755,8 +1749,8 @@ packsymbols (void)
            {
              if (bp->prec != 0 && bp->alias->prec != 0
                  && bp->user_token_number == SALIAS)
-               warnss(_("conflicting precedences for %s and %s"),
-                      bp->tag, bp->alias->tag);
+               complain (_("conflicting precedences for %s and %s"),
+                         bp->tag, bp->alias->tag);
              if (bp->prec != 0)
                bp->alias->prec = bp->prec;
              else
@@ -1765,15 +1759,15 @@ packsymbols (void)
 
          if (bp->assoc != bp->alias->assoc)
            {
-           if (bp->assoc != 0 && bp->alias->assoc != 0
-               && bp->user_token_number == SALIAS)
-             warnss(_("conflicting assoc values for %s and %s"),
-                    bp->tag, bp->alias->tag);
-           if (bp->assoc != 0)
-             bp->alias->assoc = bp->assoc;
-           else
-             bp->assoc = bp->alias->assoc;
-         }
+             if (bp->assoc != 0 && bp->alias->assoc != 0
+                 && bp->user_token_number == SALIAS)
+               complain (_("conflicting assoc values for %s and %s"),
+                         bp->tag, bp->alias->tag);
+             if (bp->assoc != 0)
+               bp->alias->assoc = bp->assoc;
+             else
+               bp->assoc = bp->alias->assoc;
+           }
 
          if (bp->user_token_number == SALIAS)
            continue;  /* do not do processing below for SALIASs */
@@ -1818,10 +1812,10 @@ packsymbols (void)
           if (bp->user_token_number == SALIAS)
            continue;
           if (token_translations[bp->user_token_number] != 2)
-           warnsss(_("tokens %s and %s both assigned number %s"),
-                   tags[token_translations[bp->user_token_number]],
-                   bp->tag,
-                   int_to_string(bp->user_token_number));
+           complain (_("tokens %s and %s both assigned number %d"),
+                     tags[token_translations[bp->user_token_number]],
+                 bp->tag,
+                 bp->user_token_number);
           token_translations[bp->user_token_number] = bp->value;
         }
     }
@@ -1832,9 +1826,9 @@ packsymbols (void)
     output_token_defines(ftable);
 
   if (startval->class == SUNKNOWN)
-    fatals(_("the start symbol %s is undefined"), startval->tag);
+    fatal (_("the start symbol %s is undefined"), startval->tag);
   else if (startval->class == STOKEN)
-    fatals(_("the start symbol %s is a token"), startval->tag);
+    fatal (_("the start symbol %s is a token"), startval->tag);
 
   start_symbol = startval->value;
 
@@ -1898,12 +1892,12 @@ output_token_defines (FILE *file)
       while ((c = *cp++) && c != '.');
       if (c != '\0')  continue;
 
-      fprintf(file, "#define\t%s\t%d\n", symbol,
-               ((translations && ! rawtoknumflag)
-                       ? bp->user_token_number
-                       : bp->value));
+      fprintf (file, "#define\t%s\t%d\n", symbol,
+              ((translations && ! rawtoknumflag)
+               ? bp->user_token_number
+               : bp->value));
       if (semantic_parser)
-        fprintf(file, "#define\tT%s\t%d\n", symbol, bp->value);
+        fprintf (file, "#define\tT%s\t%d\n", symbol, bp->value);
     }
 
   putc('\n', file);
index 5e69a69..3259a91 100644 (file)
@@ -35,6 +35,7 @@ Boston, MA 02111-1307, USA.  */
 #include "gram.h"
 #include "machine.h"
 #include "alloc.h"
+#include "complain.h"
 
 
 extern char   **tags;          /* reader.c */
@@ -74,7 +75,6 @@ static void print_results PARAMS((void));
 static void print_notices PARAMS((void));
 void dump_grammar PARAMS((void));
 
-extern void fatals PARAMS((char *, char *));
 \f
 
 bool
@@ -138,7 +138,7 @@ reduce_grammar (void)
   print_notices();
 
   if (!BITISSET(N, start_symbol - ntokens))
-    fatals(_("Start symbol %s does not derive any sentence"),
+    fatal (_("Start symbol %s does not derive any sentence"),
           tags[start_symbol]);
 
   reduce_grammar_tables();
index e53fef4..d878feb 100644 (file)
@@ -1,3 +1,20 @@
+/* system-dependent definitions for Bison.
+   Copyright (C) 2000 Free Software Foundation, Inc.
+
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 2, or (at your option)
+   any later version.
+
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   You should have received a copy of the GNU General Public License
+   along with this program; if not, write to the Free Software Foundation,
+   Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  */
+
 #ifndef BISON_SYSTEM_H
 #define BISON_SYSTEM_H
 
 #endif
 
 #ifdef MSDOS
-#include <io.h>
+# include <io.h>
 #endif
 
 #ifdef _MSC_VER
-#include <stdlib.h>
-#include <process.h>
-#define getpid _getpid
+# include <stdlib.h>
+# include <process.h>
+# define getpid _getpid
 #endif
 
 #if defined(HAVE_STDLIB_H) || defined(MSDOS)
-#include <stdlib.h>
+# include <stdlib.h>
 #endif
 
 #if defined(HAVE_UNISTD_H)
-#include <unistd.h>
+# include <unistd.h>
 #endif
 
 #if (defined(VMS) || defined(MSDOS)) && !defined(HAVE_STRING_H)
-#define HAVE_STRING_H 1
+# define HAVE_STRING_H 1
 #endif
 
 #if defined(STDC_HEADERS) || defined(HAVE_STRING_H)
-#include <string.h>
+# include <string.h>
 /* An ANSI string.h and pre-ANSI memory.h might conflict.  */
-#if !defined(STDC_HEADERS) && defined(HAVE_MEMORY_H)
-#include <memory.h>
-#endif /* not STDC_HEADERS and HAVE_MEMORY_H */
-#ifndef bcopy
-#define bcopy(src, dst, num) memcpy((dst), (src), (num))
-#endif
+# if !defined(STDC_HEADERS) && defined(HAVE_MEMORY_H)
+#  include <memory.h>
+# endif /* not STDC_HEADERS and HAVE_MEMORY_H */
+# ifndef bcopy
+#  define bcopy(src, dst, num) memcpy((dst), (src), (num))
+# endif
 #else /* not STDC_HEADERS and not HAVE_STRING_H */
-#include <strings.h>
+# include <strings.h>
 /* memory.h and strings.h conflict on some systems.  */
 #endif /* not STDC_HEADERS and not HAVE_STRING_H */
 
 #if defined(STDC_HEADERS) || defined(HAVE_CTYPE_H)
-#include <ctype.h>
+# include <ctype.h>
+#endif
+
+#include <errno.h>
+#ifndef errno
+extern int errno;
 #endif
 
+
+/*-----------------.
+| GCC extensions.  |
+`-----------------*/
+
+#ifndef __attribute__
+/* This feature is available in gcc versions 2.5 and later.  */
+# if __GNUC__ < 2 || (__GNUC__ == 2 && __GNUC_MINOR__ < 5) || __STRICT_ANSI__
+#  define __attribute__(Spec) /* empty */
+# endif
+/* The __-protected variants of `format' and `printf' attributes
+   are accepted by gcc versions 2.6.4 (effectively 2.7) and later.  */
+# if __GNUC__ < 2 || (__GNUC__ == 2 && __GNUC_MINOR__ < 7)
+#  define __format__ format
+#  define __printf__ printf
+# endif
+#endif
+
+
+/*------.
+| NLS.  |
+`------*/
+
 #ifdef HAVE_LOCALE_H
 # include <locale.h>
 #endif
 #endif
 #define N_(Text) Text
 
+
+/*-------------------------------.
+| Fix broken compilation flags.  |
+`-------------------------------*/
+
 #ifndef LOCALEDIR
-#define LOCALEDIR "/usr/local/share/locale"
+# define LOCALEDIR "/usr/local/share/locale"
 #endif
 
 #endif  /* BISON_SYSTEM_H */