]> git.saurik.com Git - bison.git/commitdiff
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 555795ba2b2f0bccd2a800e30acc7212a399fe7e..040af56edae385d231508bc53cb35696393cead7 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.
 2000-03-28  Akim Demaille  <akim@epita.fr>
 
        * lib/: New directory.
index d26f29d05067305aec7fc7fae7223d9859f77923..fec8f8d027b605e7711bf8e386fcb06bab601cd5 100644 (file)
@@ -36,6 +36,7 @@ AC_CHECK_FUNCS(mkstemp setlocale)
 BISON_NEED_DECLARATIONS(calloc realloc)
 
 AM_GNU_GETTEXT
 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.
 
 # This is necessary so that .o files in LIBOBJS are also built via
 # the ANSI2KNR-filtering rules.
index e56419a53f53fb1a0cafb9aadca869a880160932..9a4e37fa67cf307e634cc37ae47c75f84b9be261 100644 (file)
@@ -7,8 +7,7 @@ noinst_LIBRARIES = libbison.a
 INCLUDES = -I.. -I$(srcdir) -I../intl
 
 libbison_a_SOURCES = getopt.c getopt1.c
 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)
 
 libbison_a_LIBADD = @LIBOBJS@ @ALLOCA@
 libbison_a_DEPENDENCIES = $(libbison_a_LIBADD)
-
-noinst_HEADERS = getopt.h
index c64417c62191917bf4021b3875d8bc6ffad8d9d6..3643c690bd6eee942aac79be023a707e8f11d273 100644 (file)
@@ -1,2 +1,2 @@
 ## Process this file with automake to produce Makefile.in -*-Makefile-*-
 ## 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 a875269557d69ef0ace293255d742cd2131c6c5b..0210c94d61ee48e748b588c88cceb95afa89bb45 100644 (file)
--- a/po/de.po
+++ b/po/de.po
@@ -5,7 +5,7 @@
 msgid ""
 msgstr ""
 "Project-Id-Version: bison 1.25\n"
 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"
 "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"
 
 "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"
 #: 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 ""
 
 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"
 
 #, 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"
 
 #, 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"
 
 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"
 
 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?
 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"
 
 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«"
 
 #, 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«"
 
 #, 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«"
 
 #, 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"
 
 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"
 
 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"
 
 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"
 #, 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"
 
 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
 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:"
 
 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"
 
 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"
 
 #, 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"
 
 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"
 
 msgid "unterminated string"
 msgstr "unbeendete Zeichenkette"
 
-#: src/reader.c:434
+#: src/reader.c:424
 #, c-format
 msgid "unrecognized: %s"
 msgstr "unbekannt: %s"
 
 #, c-format
 msgid "unrecognized: %s"
 msgstr "unbekannt: %s"
 
-#: src/reader.c:439
+#: src/reader.c:429
 msgid "no input grammar"
 msgstr "keine Eingabe-Grammatik"
 
 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"
 
 #, c-format
 msgid "unknown character: %s"
 msgstr "unbekanntes Zeichen: %s"
 
-#: src/reader.c:493
+#: src/reader.c:484
 msgid "unterminated `%{' definition"
 msgstr "unbeendete »%{« Definition"
 
 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"
 
 #, 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"
 
 #, 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"
 
 #, 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"
 
 #, 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"
 
 #, 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"
 
 #, 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"
 
 #, 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>"
 
 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«"
 
 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"
 
 #, 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"
 
 #, 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"
 
 #, 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"
 
 #, 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"
 
 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"
 
 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"
 
 #, 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"
 
 #, 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"
 
 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"
 
 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"
 
 #, 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"
 
 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"
 
 #, 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"
 
 msgstr "unbeendeter %%guard Fall"
 
-#: src/reader.c:1307
+#: src/reader.c:1300
 msgid "unmatched `{'"
 msgstr "»{« hat kein Gegenstück"
 
 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"
 
 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"
 
 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"
 
 #, 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"
 
 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"
 
 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"
 
 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"
 
 #, 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"
 
 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"
 
 #, 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"
 
 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"
 
 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"
 
 #, 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"
 
 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"
 
 #, 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"
 
 #, 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"
 
 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"
 
 #, 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"
 #, 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"
 
 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"
 
 #, 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"
 
 #, 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"
 
 #, 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
 #, 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
 #, 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.
 #, 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"
 
 #, 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.
 #, 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"
 
 #, 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"
 
 #, 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"
 
 #, 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"
 #, fuzzy
 #~ msgid ""
 #~ "Usage: %s [-dhklntvyV] [-b file-prefix] [-o outfile] [-p name-prefix]\n"
index 05f26be2c39c435ebc803771644b4467ba260347..5449a00a23e8f6e59412291b37224c6e86a9a672 100644 (file)
--- a/po/es.po
+++ b/po/es.po
@@ -30,7 +30,7 @@
 msgid ""
 msgstr ""
 "Project-Id-Version: GNU bison 1.25\n"
 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"
 "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"
 
 "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"
 #: 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
 #
 
 # 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
 #, 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"
 
 #, 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
 
 # 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"
 
 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"
 
 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?
 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"
 
 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'"
 
 #, 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'"
 
 #, 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
 #, 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"
 
 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"
 
 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"
 
 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"
 #, 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
 #
 # 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
 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:"
 
 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"
 
 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"
 
 #, 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"
 
 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"
 
 msgid "unterminated string"
 msgstr "cadena sin terminar"
 
-#: src/reader.c:434
+#: src/reader.c:424
 #, c-format
 msgid "unrecognized: %s"
 msgstr "no reconocido: %s"
 
 #, 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"
 
 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"
 
 #, 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"
 
 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"
 
 #, 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"
 
 #, 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"
 #, 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
 #
 # - 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"
 
 #, 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"
 
 #, 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"
 
 #, 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"
 
 #, 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>"
 
 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'"
 
 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"
 #, 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
 # 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 ""
 #, 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
 # 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"
 
 #, 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"
 
 #, 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"
 
 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"
 
 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"
 
 #, 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"
 
 #, 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"
 
 msgid "invalid $ value"
 msgstr "valor $ no válido"
 
-#: src/reader.c:1092
+#: src/reader.c:1083
 msgid "unmatched right brace (`}')"
 msgstr "llave derecha (`}') desemparejada"
 
 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"
 
 #, 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"
 
 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"
 #, 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
 #
 # 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
 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"
 
 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 :"
 
 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"
 
 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"
 
 #, 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
 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"
 
 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"
 
 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"
 
 #, 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"
 
 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"
 
 #, 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"
 
 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
 #
 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"
 
 #, 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"
 
 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"
 
 #, 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"
 
 #, 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"
 
 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"
 
 #, 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"
 #, 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"
 
 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
 #, 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"
 
 #, 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"
 
 #, 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
 #, 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
 #, 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"
 #, 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.
 # 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"
 #, 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
 # 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.
 #, 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"
 
 #, 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
 #, 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"
 
 #, 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
 # ¿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 0c432a20f8c9980039692c9f70e18bb10bef7dc5..6e73dd67fac3a005d639ce088d7fedbf5ae13566 100644 (file)
--- a/po/fr.po
+++ b/po/fr.po
@@ -5,7 +5,7 @@
 msgid ""
 msgstr ""
 "Project-Id-Version: bison 1.25\n"
 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"
 "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"
 
 "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"
 #: 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 ""
 
 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"
 
 #, 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"
 
 #, 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é"
 
 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"
 
 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"
 
 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"
 
 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"
 
 #, 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"
 
 #, 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'"
 
 #, 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"
 
 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"
 
 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"
 
 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"
 #, 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"
 
 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
 msgstr "taille maximum des tables (%s) dépassée"
 
 #: src/print.c:85
@@ -356,234 +353,242 @@ msgstr " 
 msgid " on right:"
 msgstr " à droite:"
 
 msgid " on right:"
 msgstr " à droite:"
 
-#: src/reader.c:163
+#: src/reader.c:154
 msgid "   Skipping to next \\n"
 msgstr "   Saut jusqu'au prochain \\n"
 
 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"
 
 #, 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"
 
 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"
 
 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"
 
 #, 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"
 
 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"
 
 #, 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"
 
 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"
 
 #, 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"
 
 #, 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"
 
 #, 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"
 
 #, 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"
 
 #, 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"
 
 #, 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"
 
 #, 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>"
 
 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"
 
 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"
 
 #, 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"
 
 #, 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"
 
 #, 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"
 
 #, 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"
 
 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"
 
 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"
 
 #, 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"
 
 #, 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"
 
 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"
 
 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é"
 
 #, 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é"
 
 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"
 
 #, 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"
 
 msgstr "clause %%guard non terminée"
 
-#: src/reader.c:1307
+#: src/reader.c:1300
 msgid "unmatched `{'"
 msgstr "accolade ouvrante `{' non appariée"
 
 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 `:'"
 
 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"
 
 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"
 
 #, 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"
 
 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é"
 
 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"
 
 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"
 
 #, 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"
 
 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"
 
 #, 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"
 
 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"
 
 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"
 
 #, 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"
 
 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"
 
 #, 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"
 
 #, 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"
 
 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"
 
 #, 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"
 #, 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)"
 
 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"
 
 #, 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"
 
 #, 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"
 
 #, 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
 #, 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
 #, 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.
 #, 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"
 
 #, 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.
 #, 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"
 
 #, 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"
 
 #, 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"
 
 #, 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"
 #~ msgid ""
 #~ "\n"
 #~ "\n"
index dbe174f2f90820a0214d90e2c2093cf9ecb55c58..3f18ccfda19efb59cbe3513df6c83f3d6f5fa920 100644 (file)
--- a/po/nl.po
+++ b/po/nl.po
@@ -5,7 +5,7 @@
 msgid ""
 msgstr ""
 "Project-Id-Version: bison 1.25\n"
 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"
 "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"
 
 "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"
 #: 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 ""
 
 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"
 
 #, 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"
 
 #, 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"
 
 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"
 
 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"
 
 msgstr "Onverwacht bestandseinde"
 
-#: src/lex.c:197
+#: src/lex.c:193
 msgid "unescaped newline in constant"
 msgstr "niet geescapete nieuwe regel in constante"
 
 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'"
 
 #, 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'"
 
 #, 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'"
 
 #, 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"
 
 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"
 
 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"
 
 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"
 #, 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"
 
 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
 msgstr "maximale tabel grootte (%s) overschreden"
 
 #: src/print.c:85
@@ -355,234 +352,242 @@ msgstr " links:"
 msgid " on right:"
 msgstr " rechts:"
 
 msgid " on right:"
 msgstr " rechts:"
 
-#: src/reader.c:163
+#: src/reader.c:154
 msgid "   Skipping to next \\n"
 msgstr "   Verder naar volgende \\n"
 
 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"
 
 #, 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"
 
 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"
 
 msgid "unterminated string"
 msgstr "niet getermineerde string"
 
-#: src/reader.c:434
+#: src/reader.c:424
 #, c-format
 msgid "unrecognized: %s"
 msgstr "onbekend: %s"
 
 #, c-format
 msgid "unrecognized: %s"
 msgstr "onbekend: %s"
 
-#: src/reader.c:439
+#: src/reader.c:429
 msgid "no input grammar"
 msgstr "geen invoer grammatica"
 
 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"
 
 #, 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"
 
 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"
 
 #, 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"
 
 #, 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"
 
 #, 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"
 
 #, 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"
 
 #, 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"
 
 #, 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"
 
 #, 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>"
 
 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'"
 
 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"
 
 #, 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"
 
 #, 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"
 
 #, 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"
 
 #, 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"
 
 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 (`}')"
 
 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"
 
 #, 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"
 
 #, 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"
 
 msgid "invalid $ value"
 msgstr "onjuiste $ waarde"
 
-#: src/reader.c:1092
+#: src/reader.c:1083
 msgid "unmatched right brace (`}')"
 msgstr "niet overeenkomstig rechter haakje (`}')"
 
 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"
 
 #, 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"
 
 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"
 
 #, 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"
 
 msgstr "niet getermineerde %%guard voorwaarde"
 
-#: src/reader.c:1307
+#: src/reader.c:1300
 msgid "unmatched `{'"
 msgstr "niet overeenkomstige `{'"
 
 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"
 
 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"
 
 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"
 
 #, 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"
 
 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"
 
 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"
 
 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"
 
 #, 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"
 
 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"
 
 #, 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"
 
 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"
 
 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"
 
 #, 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"
 
 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"
 
 #, 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"
 
 #, 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
 #, c-format
-msgid "tokens %s and %s both assigned number %s"
+msgid "tokens %s and %s both assigned number %d"
 msgstr ""
 
 msgstr ""
 
-#: src/reader.c:1835
+#: src/reader.c:1829
 #, c-format
 msgid "the start symbol %s is undefined"
 msgstr ""
 
 #, 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"
 #, 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"
 
 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"
 
 #, 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"
 
 #, 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"
 
 #, 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
 #, 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
 #, 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.
 #, 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"
 
 #, 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.
 #, 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"
 
 #, 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"
 
 #, 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"
 
 #, 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"
 #~ msgid ""
 #~ "\n"
 #~ "\n"
index 143514280c7ea2d4fc3c6dc2b230809230b5302d..8e399a9fa8b14a1d8dee3dd2e6bc9e9a6c58221c 100644 (file)
--- a/po/ru.po
+++ b/po/ru.po
@@ -5,7 +5,7 @@
 msgid ""
 msgstr ""
 "Project-Id-Version: bison 1.25\n"
 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"
 "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"
 
 "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"
 #: 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 ""
 
 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"
 
 #, 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"
 
 #, 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 "×ÓÔÒÅÞÅΠɠÐÒÏÉÇÎÏÒÉÒÏ×ÁΠÎÅÏÖÉÄÁÎÎÙÊ ÓÉÍ×ÏÌ `/'"
 
 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 "ÎÅÚÁËÏÎÞÅÎÎÙÊ ËÏÍÍÅÎÔÁÒÉÊ"
 
 msgid "unterminated comment"
 msgstr "ÎÅÚÁËÏÎÞÅÎÎÙÊ ËÏÍÍÅÎÔÁÒÉÊ"
 
-#: src/lex.c:176
-msgid "Unexpected end of file"
+#: src/lex.c:172
+#, fuzzy
+msgid "unexpected end of file"
 msgstr "îÅÏÖÉÄÁÎÎÙÊ ËÏÎÅàÆÁÊÌÁ"
 
 msgstr "îÅÏÖÉÄÁÎÎÙÊ ËÏÎÅàÆÁÊÌÁ"
 
-#: src/lex.c:197
+#: src/lex.c:193
 msgid "unescaped newline in constant"
 msgstr "ÎÅÜËÒÁÎÉÒÏ×ÁÎÎÙÊ ÐÅÒÅ×ÏÄ ÓÔÒÏËÉ × ËÏÎÓÔÁÎÔÅ"
 
 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'"
 
 #, 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'"
 
 #, 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' ÐÏÓÌÅ `\\'"
 
 #, 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 "ÉÓÐÏÌØÚÕÊÔÅ \"...\" ÄÌÑ ÍÎÏÇÏÓÉÍ×ÏÌØÎÙÈ ÌÉÔÅÒÁÌØÎÙÈ ÌÅËÓÅÍ"
 
 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 "ÎÅÚÁËÏÎÞÅÎÎÏÅ ÉÍÑ ÔÉÐÁ × ËÏÎÃÅ ÆÁÊÌÁ"
 
 msgid "unterminated type name at end of file"
 msgstr "ÎÅÚÁËÏÎÞÅÎÎÏÅ ÉÍÑ ÔÉÐÁ × ËÏÎÃÅ ÆÁÊÌÁ"
 
-#: src/lex.c:478
+#: src/lex.c:476
 msgid "unterminated type name"
 msgstr "ÎÅÚÁËÏÎÞÅÎÎÏÅ ÉÍÑ ÔÉÐÁ"
 
 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"
 #, fuzzy, c-format
 msgid "%s: internal error: %s\n"
 msgstr "×ÎÕÔÒÅÎÎÑÑ ÏÛÉÂËÁ, %s\n"
@@ -247,9 +244,9 @@ msgstr "
 msgid "Entering set_nullable"
 msgstr "÷ÈÏÄ × set_nullable"
 
 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
 msgstr "ÐÒÅ×ÙÛÅΠÍÁËÓÉÍÁÌØÎÙÊ ÒÁÚÍÅÒ ÔÁÂÌÉÃÙ (%s)"
 
 #: src/print.c:85
@@ -351,232 +348,240 @@ msgstr " 
 msgid " on right:"
 msgstr " ÎÁÐÒÁ×Ï:"
 
 msgid " on right:"
 msgstr " ÎÁÐÒÁ×Ï:"
 
-#: src/reader.c:163
+#: src/reader.c:154
 msgid "   Skipping to next \\n"
 msgstr "   ðÒÏÐÕÓË ÄÏ ÓÌÅÄÕÀÝÅÇÏ \\n"
 
 msgid "   Skipping to next \\n"
 msgstr "   ðÒÏÐÕÓË ÄÏ ÓÌÅÄÕÀÝÅÇÏ \\n"
 
-#: src/reader.c:165
+#: src/reader.c:156
 #, c-format
 msgid "   Skipping to next %c"
 msgstr "   ðÒÏÐÕÓË ÄÏ ÓÌÅÄÕÀÝÅÇÏ %c"
 
 #, 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 "ÎÅÚÁËÏÎÞÅÎÎÁÑ ÓÔÒÏËÁ × ËÏÎÃÅ ÆÁÊÌÁ"
 
 msgid "unterminated string at end of file"
 msgstr "ÎÅÚÁËÏÎÞÅÎÎÁÑ ÓÔÒÏËÁ × ËÏÎÃÅ ÆÁÊÌÁ"
 
-#: src/reader.c:192
+#: src/reader.c:183
 msgid "unterminated string"
 msgstr "ÎÅÚÁËÏÎÞÅÎÎÁÑ ÓÔÒÏËÁ"
 
 msgid "unterminated string"
 msgstr "ÎÅÚÁËÏÎÞÅÎÎÁÑ ÓÔÒÏËÁ"
 
-#: src/reader.c:434
+#: src/reader.c:424
 #, c-format
 msgid "unrecognized: %s"
 msgstr "ÎÅÒÁÓÐÏÚÎÁÎÏ: %s"
 
 #, c-format
 msgid "unrecognized: %s"
 msgstr "ÎÅÒÁÓÐÏÚÎÁÎÏ: %s"
 
-#: src/reader.c:439
+#: src/reader.c:429
 msgid "no input grammar"
 msgstr "ÎÅÔ ×ÈÏÄÎÏÊ ÇÒÁÍÍÁÔÉËÉ"
 
 msgid "no input grammar"
 msgstr "ÎÅÔ ×ÈÏÄÎÏÊ ÇÒÁÍÍÁÔÉËÉ"
 
-#: src/reader.c:442
+#: src/reader.c:432
 #, c-format
 msgid "unknown character: %s"
 msgstr "ÎÅÉÚ×ÅÓÔÎÙÊ ÓÉÍ×ÏÌ: %s"
 
 #, c-format
 msgid "unknown character: %s"
 msgstr "ÎÅÉÚ×ÅÓÔÎÙÊ ÓÉÍ×ÏÌ: %s"
 
-#: src/reader.c:493
+#: src/reader.c:484
 msgid "unterminated `%{' definition"
 msgstr "ÎÅÚÁËÏÎÞÅÎÎÏÅ ÏÐÒÅÄÅÌÅÎÉÅ `%{'"
 
 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"
 
 #, 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"
 
 #, 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"
 
 #, 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, ÏÖÉÄÁÌÓÑ ÉÄÅÎÔÉÆÉËÁÔÏÒ"
 
 #, 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 ÏÖÉÄÁÌÁÓØ ÓÔÒÏËÏ×ÁÑ ÐÏÓÔÏÑÎÎÁÑ"
 
 #, 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"
 
 #, c-format
 msgid "multiple %start declarations"
 msgstr "ÍÎÏÖÅÓÔ×ÅÎÎÏÅ ÏÐÉÓÁÎÉÅ %start"
 
-#: src/reader.c:685
+#: src/reader.c:676
 #, c-format
 msgid "invalid %start declaration"
 msgstr "ÎÅ×ÅÒÎÏÅ ÏÐÉÓÁÎÉÅ %start"
 
 #, c-format
 msgid "invalid %start declaration"
 msgstr "ÎÅ×ÅÒÎÏÅ ÏÐÉÓÁÎÉÅ %start"
 
-#: src/reader.c:705
+#: src/reader.c:696
 msgid "%type declaration has no <typename>"
 msgstr "ÏÐÉÓÁÎÉÅ %type ÎÅ ÉÍÅÅÔ <ÉÍÑ_ÔÉÐÁ>"
 
 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'"
 
 msgstr "ÎÅ×ÅÒÎÏÅ ÏÐÉÓÁÎÉÅ %%type ÉÚ-ÚÁ ÜÌÅÍÅÎÔÁ: `%s'"
 
-#: src/reader.c:788
+#: src/reader.c:780
 #, c-format
 msgid "redefining precedence of %s"
 msgstr "ÐÅÒÅÏÐÒÅÄÅÌÅÎÉÅ ÐÒÉÏÒÉÔÅÔÁ ÄÌÑ %s"
 
 #, 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) - ÞÉÓÌÏ ÄÏÌÖÎÏ ÓÌÅÄÏ×ÁÔØ ÚÁ ÉÄÅÎÔÉÆÉËÁÔÏÒÏÍ"
 
 #, 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"
 
 #, c-format
 msgid "unexpected item: %s"
 msgstr "ÎÅÏÖÉÄÁÎÎÙÊ ÜÌÅÍÅÎÔ: %s"
 
-#: src/reader.c:845
+#: src/reader.c:837
 #, c-format
 msgid "multiple %union declarations"
 msgstr "ÍÎÏÖÅÓÔ×ÅÎÎÏÅ ÏÐÉÓÁÎÉÅ %union"
 
 #, c-format
 msgid "multiple %union declarations"
 msgstr "ÍÎÏÖÅÓÔ×ÅÎÎÏÅ ÏÐÉÓÁÎÉÅ %union"
 
-#: src/reader.c:903
+#: src/reader.c:895
 msgid "unterminated comment at end of file"
 msgstr "ÎÅÚÁËÏÎÞÅÎÎÙÊ ËÏÍÍÅÎÔÁÒÉÊ × ËÏÎÃÅ ÆÁÊÌÁ"
 
 msgid "unterminated comment at end of file"
 msgstr "ÎÅÚÁËÏÎÞÅÎÎÙÊ ËÏÍÍÅÎÔÁÒÉÊ × ËÏÎÃÅ ÆÁÊÌÁ"
 
-#: src/reader.c:929
+#: src/reader.c:921
 msgid "unmatched close-brace (`}')"
 msgstr "ÎÅÐÁÒÎÁÑ ÚÁËÒÙ×ÁÀÝÁÑ ÆÉÇÕÒÎÁÑ ÓËÏÂËÁ (`}')"
 
 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 ÎÅ Ñ×ÌÑÅÔÓÑ ÃÅÌÙÍ ÞÉÓÌÏÍ"
 
 #, 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"
 
 #, c-format
 msgid "@%s is invalid"
 msgstr "ÎÅ×ÅÒÎÙÊ ÚÎÁË @%s"
 
-#: src/reader.c:1014
+#: src/reader.c:1012 src/reader.c:1024
 msgid "invalid $ value"
 msgstr "ÎÅ×ÅÒÎÏÅ $ ÚÎÁÞÅÎÉÅ"
 
 msgid "invalid $ value"
 msgstr "ÎÅ×ÅÒÎÏÅ $ ÚÎÁÞÅÎÉÅ"
 
-#: src/reader.c:1092
+#: src/reader.c:1083
 msgid "unmatched right brace (`}')"
 msgstr "ÎÅÐÁÒÎÁÑ ÐÒÁ×ÁÑ ÆÉÇÕÒÎÁÑ ÓËÏÂËÁ (`}')"
 
 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' ÎÅ ÉÍÅÅÔ ÏÐÉÓÁÎÎÏÇÏ ÔÉÐÁ"
 
 #, 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' ÎÅ ÉÍÅÅÔ ÏÐÉÓÁÎÎÏÇÏ ÔÉÐÁ"
 
 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"
 
 #, 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"
 
 msgstr "ÎÅÚÁËÏÎÞÅÎÎÙÊ ÏÐÅÒÁÔÏÒ %%guard"
 
-#: src/reader.c:1307
+#: src/reader.c:1300
 msgid "unmatched `{'"
 msgstr "ÎÅÐÁÒÎÁÑ `{'"
 
 msgid "unmatched `{'"
 msgstr "ÎÅÐÁÒÎÁÑ `{'"
 
-#: src/reader.c:1393
+#: src/reader.c:1386
 msgid "ill-formed rule: initial symbol not followed by colon"
 msgstr "ÎÅ×ÅÒÎÏÅ ÐÒÁ×ÉÌÏ: Ä×ÏÅÔÏÞÉÅ ÎÅ ÓÌÅÄÕÅÔ ÚÁ ÎÁÞÁÌØÎÙÍ ÓÉÍ×ÏÌÏÍ"
 
 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 "ÇÒÁÍÍÁÔÉËÁ ÎÁÞÉÎÁÅÔÓÑ Ó ×ÅÒÔÉËÁÌØÎÏÊ ÞÅÒÔÙ"
 
 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, ËÏÔÏÒÙÊ Ñ×ÌÑÅÔÓÑ ÌÅËÓÅÍÏÊ"
 
 #, 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 ÐÏÄÒÑÄ"
 
 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 ÎÅ ÚÁÄÁÎ"
 
 msgstr "%%guard ÐÒÉÓÕÔÓÔ×ÕÅÔ, Á %%semantic_parser ÎÅ ÚÁÄÁÎ"
 
-#: src/reader.c:1546
+#: src/reader.c:1540
 msgid "two actions at end of one rule"
 msgstr "Ä×Á ÄÅÊÓÔ×ÉÑ × ËÏÎÃÅ ÏÄÎÏÇÏ ÐÒÁ×ÉÌÁ"
 
 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') ÎÁ ÄÅÊÓÔ×ÉÉ ÐÏ ÕÍÏÌÞÁÎÉÀ"
 
 #, 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 ""
 "ÐÕÓÔÏÅ ÐÒÁ×ÉÌÏ ÄÌÑ ÔÉÐÉÚÉÒÏ×ÁÎÎÏÇÏ ÎÅÔÅÒÍÉÎÁÌØÎÏÇÏ ÓÉÍ×ÏÌÁ, É ÎÅÔ ÄÅÊÓÔ×ÉÑ"
 
 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"
 
 #, 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"
 
 msgstr "ÓÌÉÛËÏÍ ÍÎÏÇÏ ÓÉÍ×ÏÌÏ× (ÌÅËÓÅÍÙ ÐÌÀÓ ÎÅÔÅÒÍÉÎÁÌÙ); ÍÁËÓÉÍÁÌØÎÏ %s"
 
-#: src/reader.c:1622
+#: src/reader.c:1616
 msgid "no rules in the input grammar"
 msgstr "ÏÔÓÕÔÓÔ×ÕÀÔ ÐÒÁ×ÉÌÁ ×Ï ×ÈÏÄÎÏÊ ÇÒÁÍÍÁÔÉËÅ"
 
 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 ÉÓÐÏÌØÚÕÅÔÓÑ, ÎÏ ÎÅ ÏÐÒÅÄÅÌÅΠËÁË ÌÅËÓÅÍÁ É ÎÅ ÉÍÅÅÔ ÐÒÁ×ÉÌ"
 
 #, 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"
 
 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"
 
 #, 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"
 
 #, 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"
 
 msgstr "ÏÂÏÉÍ ÌÅËÓÅÍÁÍ %s É %s ÐÒÉÓ×ÏÅΠÎÏÍÅÒ %s"
 
-#: src/reader.c:1835
+#: src/reader.c:1829
 #, c-format
 msgid "the start symbol %s is undefined"
 msgstr "ÎÁÞÁÌØÎÙÊ ÓÉÍ×ÏÌ %s ÎÅÏÐÒÅÄÅÌÅÎ"
 
 #, 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 Ñ×ÌÑÅÔÓÑ ÌÅËÓÅÍÏÊ"
 #, 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"
 
 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"
 
 #, 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"
 
 #, 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"
 
 #, 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
 #, 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
 #, 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.
 #, 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"
 
 #, 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.
 #, 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"
 
 #, 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"
 
 #, 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"
 
 #, 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"
 #, fuzzy
 #~ msgid ""
 #~ "Usage: %s [-dhklntvyV] [-b file-prefix] [-o outfile] [-p name-prefix]\n"
index 1ed8e92ce4bd73c73612d7929503b08acbc5edb3..d03dfb51342e62e9e32fa5171fc8e59f5acb4bdd 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 "alloc.h"
 #include "gram.h"
 #include "state.h"
+#include "complain.h"
 
 
 extern char *nullable;
 
 
 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 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;
 
 static core *this_state;
 static core *last_state;
@@ -374,7 +374,7 @@ new_state (int symbol)
 #endif
 
   if (nstates >= MAXSHORT)
 #endif
 
   if (nstates >= MAXSHORT)
-    toomany("states");
+    fatal (_("too many states (max %d)"), MAXSHORT);
 
   isp1 = kernel_base[symbol];
   iend = kernel_end[symbol];
 
   isp1 = kernel_base[symbol];
   iend = kernel_end[symbol];
index e4fede471572e17b56d2eb992905bf8fb4524db0..fbf8aa5c55cc83e81d266a9c276c16e1b6fd02b6 100644 (file)
@@ -1,14 +1,6 @@
 ## Process this file with automake to produce Makefile.in -*-Makefile-*-
 AUTOMAKE_OPTIONS = 1.4 ../lib/ansi2knr
 
 ## 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\" \
 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
 
 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
  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 e8556a258c6e2a7a71a9c5802d4b3736deea6988..f77df452b8b2272ec58441659fc5fd00b6c5d3a5 100644 (file)
@@ -50,6 +50,7 @@ Boston, MA 02111-1307, USA.  */
 #include "files.h"
 #include "alloc.h"
 #include "gram.h"
 #include "files.h"
 #include "alloc.h"
 #include "gram.h"
+#include "complain.h"
 
 FILE *finput = NULL;
 FILE *foutput = NULL;
 
 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 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 *));
 
 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;
 
 extern char *program_name;
 extern int verboseflag;
@@ -231,7 +230,7 @@ openfiles (void)
 
   finput = tryopen(infile, "r");
 
 
   finput = tryopen(infile, "r");
 
-  if (! noparserflag) 
+  if (! noparserflag)
     {
       filename = getenv("BISON_SIMPLE");
 #ifdef MSDOS
     {
       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");
       /* use permanent name for actions file */
       actfile = stringappend(name_base, short_base_length, ".act");
       faction = tryopen(actfile, "w");
-    } 
+    }
 
 #ifdef MSDOS
   if (! noparserflag)
 
 #ifdef MSDOS
   if (! noparserflag)
@@ -338,7 +337,7 @@ open_extra_files (void)
 
   tryclose(fparser);
 
 
   tryclose(fparser);
 
-  if (! noparserflag) 
+  if (! noparserflag)
     {
       filename = (char *) getenv ("BISON_HAIRY");
 #ifdef MSDOS
     {
       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;
 
 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;
 }
 
   return ptr;
 }
 
@@ -395,16 +391,13 @@ tryclose (FILE *ptr)
 
   result = fclose (ptr);
   if (result == EOF)
 
   result = fclose (ptr);
   if (result == EOF)
-    {
-      fprintf (stderr, "%s: ", program_name);
-      perror ("fclose");
-      done (2);
-    }
+    error (2, errno, _("cannot close file"));
+
   return result;
 }
 
 void
   return result;
 }
 
 void
-done (int k)
+done (void)
 {
   tryclose(faction);
   tryclose(fattrs);
 {
   tryclose(faction);
   tryclose(fattrs);
@@ -413,8 +406,8 @@ done (int k)
   tryclose(fparser);
   tryclose(foutput);
 
   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;
     {
       FILE *ftmp;
       register int c;
@@ -445,8 +438,10 @@ done (int k)
     delete(tmpattrsfile);
   if (ftable)
     delete(tmptabfile);
     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);
 #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__) */
   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 */
 }
 #endif /* not VMS, or __VMS_POSIX */
 }
index 6bc1e4e5b203b487e01e754ecfdc705df83852ba..3886d7c5bc608967b0ce756eaf1c56ade2e8a878 100644 (file)
@@ -1,22 +1,22 @@
 /* File names and variables for bison,
 /* 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.
 
 
 /* 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 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;
 extern char *outfile;
 extern char *defsfile;
 extern char *tabfile;
 extern char *attrsfile;
 extern char *guardfile;
 extern char *actfile;
+
+void done PARAMS((void));
index 647c0f70d52c98a223763132e4b45ca0e7b7db91..3015f8b796dfd254d63723d03615030b20a31c9d 100644 (file)
@@ -66,8 +66,8 @@ usage (FILE *stream)
 {
   /* Some efforts were made to ease the translators' task, please
      continue.  */
 {
   /* 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, _("\
   putc ('\n', stream);
 
   fprintf (stream, _("\
@@ -80,14 +80,14 @@ for the equivalent short option also.  Similarly for optional arguments.\n"),
         stream);
   putc ('\n', stream);
 
         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\
 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);
 
   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\
 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\
   -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);
 
   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\
 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);
 
   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
 }
 
 void
index 117f2b9fa9d15a756ea4645b35c8cf64e572c54f..767c646e65596973d1d77d51b8f9b31d035871dd 100644 (file)
@@ -24,7 +24,7 @@ Boston, MA 02111-1307, USA.  */
 
 lalr(), the entry point, builds these data structures:
 
 
 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
  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.
 
  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.
 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 "state.h"
 #include "alloc.h"
 #include "gram.h"
-
+#include "complain.h"
 
 extern short **derives;
 extern char *nullable;
 
 extern short **derives;
 extern char *nullable;
@@ -92,7 +92,6 @@ void compute_lookaheads PARAMS((void));
 void digraph PARAMS((short **));
 void traverse PARAMS((register int));
 
 void digraph PARAMS((short **));
 void traverse PARAMS((register int));
 
-extern void toomany PARAMS((char *));
 extern void berror PARAMS((char *));
 
 static int infinity;
 extern void berror PARAMS((char *));
 
 static int infinity;
@@ -291,7 +290,7 @@ set_goto_map (void)
          if (ISTOKEN(symbol)) break;
 
          if (ngotos == MAXSHORT)
          if (ISTOKEN(symbol)) break;
 
          if (ngotos == MAXSHORT)
-           toomany(_("gotos"));
+           fatal (_("too many gotos (max %d)"), MAXSHORT);
 
          ngotos++;
          goto_map[symbol]++;
 
          ngotos++;
          goto_map[symbol]++;
@@ -413,7 +412,7 @@ initialize_F (void)
              if (nullable[symbol])
                edge[nedges++] = map_goto(stateno, symbol);
            }
              if (nullable[symbol])
                edge[nedges++] = map_goto(stateno, symbol);
            }
-       
+
          if (nedges)
            {
              reads[i] = rp = NEW2(nedges + 1, short);
          if (nedges)
            {
              reads[i] = rp = NEW2(nedges + 1, short);
index 3a51c9741e84498a6f27761136a6ea3647b61a3b..cf4f7e5752202d95ac6fc62a7357eceb445e60b3 100644 (file)
--- a/src/lex.c
+++ b/src/lex.c
@@ -1,22 +1,22 @@
 /* Token-reader for Bison's input parser,
 /* 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 "symtab.h"
 #include "lex.h"
 #include "alloc.h"
+#include "complain.h"
 
 /* flags set by % directives */
 extern int definesflag;        /* for -d */
 
 /* 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 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));
 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));
 
 /* 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;
 
 /* Buffer for storing the current token.  */
 char *token_buffer;
@@ -116,7 +112,7 @@ skip_white_space (void)
          c = getc(finput);
          if (c != '*' && c != '/')
            {
          c = getc(finput);
          if (c != '*' && c != '/')
            {
-             warn(_("unexpected `/' found and ignored"));
+             complain (_("unexpected `/' found and ignored"));
              break;
            }
          cplus_comment = (c == '/');
              break;
            }
          cplus_comment = (c == '/');
@@ -145,7 +141,7 @@ skip_white_space (void)
                  c = getc(finput);
                }
              else if (c == EOF)
                  c = getc(finput);
                }
              else if (c == EOF)
-               fatal(_("unterminated comment"));
+               fatal (_("unterminated comment"));
              else
                c = getc(finput);
            }
              else
                c = getc(finput);
            }
@@ -173,7 +169,7 @@ safegetc (FILE *f)
 {
   register int c = getc(f);
   if (c == EOF)
 {
   register int c = getc(f);
   if (c == EOF)
-    fatal(_("Unexpected end of file"));
+    fatal (_("unexpected end of file"));
   return c;
 }
 
   return c;
 }
 
@@ -194,7 +190,7 @@ literalchar (char **pp, int *pcode, char term)
   c = safegetc(finput);
   if (c == '\n')
     {
   c = safegetc(finput);
   if (c == '\n')
     {
-      warn(_("unescaped newline in constant"));
+      complain (_("unescaped newline in constant"));
       ungetc(c, finput);
       code = '?';
       wasquote = 1;
       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)
                {
              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;
                }
                  code &= 0xFF;
                  break;
                }
@@ -250,7 +247,8 @@ literalchar (char **pp, int *pcode, char term)
                break;
              if (code >= 256 || code<0)
                {
                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;
                }
                  code &= 0xFF;
                  break;
                }
@@ -260,8 +258,8 @@ literalchar (char **pp, int *pcode, char term)
        }
       else
        {
        }
       else
        {
-         warns (_("unknown escape sequence: `\\' followed by `%s'"),
-                printable_version(c));
+         complain (_("unknown escape sequence: `\\' followed by `%s'"),
+                   printable_version(c));
          code = '?';
        }
     } /* has \ */
          code = '?';
        }
     } /* has \ */
@@ -393,7 +391,7 @@ lex (void)
        c = getc(finput);
        if (c != '\'')
          {
        c = getc(finput);
        if (c != '\'')
          {
-           warn(_("use \"...\" for multi-character literal tokens"));
+           complain (_("use \"...\" for multi-character literal tokens"));
            while (1)
              {
                dp = discard;
            while (1)
              {
                dp = discard;
@@ -472,10 +470,10 @@ lex (void)
       while (c != '>')
        {
          if (c == EOF)
       while (c != '>')
        {
          if (c == EOF)
-           fatal(_("unterminated type name at end of file"));
+           fatal (_("unterminated type name at end of file"));
          if (c == '\n')
            {
          if (c == '\n')
            {
-             warn(_("unterminated type name"));
+             complain (_("unterminated type name"));
              ungetc(c, finput);
              break;
            }
              ungetc(c, finput);
              break;
            }
index 58939d92942fc8ad3a3619fc87a5fdabcd720dfa..850076b82e093bafad63ef527d6b9c91e8a346c6 100644 (file)
 #include <stdio.h>
 #include "system.h"
 #include "machine.h"   /* for MAXSHORT */
 #include <stdio.h>
 #include "system.h"
 #include "machine.h"   /* for MAXSHORT */
+#include "files.h"
+#include "complain.h"
 
 
-extern int lineno;
 extern int verboseflag;
 extern int verboseflag;
-extern char *infile;
 
 /* Nonzero means failure has been detected; don't write a parser file.  */
 int failure;
 
 /* 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 *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 *));
 
 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 verbose PARAMS((void));
 extern void terse PARAMS((void));
 extern void output PARAMS((void));
-extern void done PARAMS((int));
 
 
 /* VMS complained about using `int'.  */
 
 
 /* VMS complained about using `int'.  */
@@ -70,17 +61,20 @@ main (int argc, char *argv[])
   bindtextdomain (PACKAGE, LOCALEDIR);
   textdomain (PACKAGE);
 
   bindtextdomain (PACKAGE, LOCALEDIR);
   textdomain (PACKAGE);
 
-  failure = 0;
   lineno = 0;
   getargs(argc, argv);
   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.  */
   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 */
 
   /* 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();
 
   /* 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 */
 }
 \f
 /* functions to report errors which prevent a parser from being generated */
@@ -134,137 +129,11 @@ printable_version (int c)
   return buf;
 }
 
   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)
 {
 /* 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();
 }
   abort();
 }
index efc9577d84ba3ab94f4c80d8fd9bcc622209c6da..f7e218801f844286049aafadb7112a82fca764dd 100644 (file)
@@ -110,6 +110,7 @@ YYNTBASE = ntokens.
 #include "files.h"
 #include "gram.h"
 #include "state.h"
 #include "files.h"
 #include "gram.h"
 #include "state.h"
+#include "complain.h"
 
 
 extern int debugflag;
 
 
 extern int debugflag;
@@ -133,7 +134,6 @@ extern char *consistent;
 extern short *goto_map;
 extern short *from_state;
 extern short *to_state;
 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));
 
 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 *));
 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;
 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)
        {
          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;
 
          if (table[loc] != 0)
            ok = 0;
index 115440da15bd6be2563185a416ba2fd9c77b794c..3b11ce7a347ac610baf7492d062aca86562cbeff 100644 (file)
@@ -35,6 +35,7 @@
 #include "lex.h"
 #include "gram.h"
 #include "machine.h"
 #include "lex.h"
 #include "gram.h"
 #include "machine.h"
+#include "complain.h"
 
 #define        LTYPESTR        "\
 \n\
 
 #define        LTYPESTR        "\
 \n\
@@ -61,7 +62,6 @@ typedef\n\
 /* Number of slots allocated (but not necessarily used yet) in `rline'  */
 int rline_allocated;
 
 /* 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;
 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 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 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 unlex PARAMS((int));
-extern void done PARAMS((int));
 
 extern int skip_white_space PARAMS((void));
 extern int parse_percent_token PARAMS((void));
 
 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')
 {
   int c;
   if (target == '\n')
-    warn(_("   Skipping to next \\n"));
+    complain (_("   Skipping to next \\n"));
   else
   else
-    warni(_("   Skipping to next %c"), target);
+    complain (_("   Skipping to next %c"), target);
 
   do
     c = skip_white_space();
 
   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')
        {
        fatal (_("unterminated string at end of file"));
       if (c == '\n')
        {
-         warn (_("unterminated string"));
+         complain (_("unterminated string"));
          ungetc (c, finput);
          c = match;            /* invent terminator */
          continue;
          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;
 copy_comment (FILE *finput, FILE *foutput, int c)
 {
   int cplus_comment;
-  register int match;
   register int ended;
 
   cplus_comment = (c == '/');
   register int ended;
 
   cplus_comment = (c == '/');
@@ -431,15 +421,15 @@ read_declarations (void)
              break;
 
            default:
              break;
 
            default:
-             warns(_("unrecognized: %s"), token_buffer);
+             complain (_("unrecognized: %s"), token_buffer);
              skip_to_char('%');
          }
        }
       else if (c == EOF)
              skip_to_char('%');
          }
        }
       else if (c == EOF)
-        fatal(_("no input grammar"));
+        fatal (_("no input grammar"));
       else
        {
       else
        {
-         warns (_("unknown character: %s"), printable_version(c));
+         complain (_("unknown character: %s"), printable_version(c));
          skip_to_char('%');
        }
     }
          skip_to_char('%');
        }
     }
@@ -490,7 +480,8 @@ copy_definition (void)
          break;
 
        case EOF:
          break;
 
        case EOF:
-         fatal(_("unterminated `%{' definition"));
+         fatal ("%s",
+                _("unterminated `%{' definition"));
 
        default:
          putc(c, fattrs);
 
        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)
       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)
 
       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)
          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++;
          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)
              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)
            }
        }
       else if (symbol && token == NUMBER)
@@ -588,8 +579,8 @@ parse_token_decl (int what_is, int what_is_not)
         }
       else
        {
         }
       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('%');
        }
                (what_is == STOKEN) ? "%token" : "%nterm");
          skip_to_char('%');
        }
@@ -636,8 +627,8 @@ parse_thong_decl (void)
 
   if (token != IDENTIFIER)
     {
 
   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;
     }
       skip_to_char('%');
       return;
     }
@@ -658,8 +649,8 @@ parse_thong_decl (void)
 
   if (token != IDENTIFIER || *symval->tag != '\"')
     {
 
   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;
     }
       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)
 
 void
 parse_start_decl (void)
 {
   if (start_flag)
-    warn(_("multiple %start declarations"));
+    complain ("%s", _("multiple %start declarations"));
   if (lex() != IDENTIFIER)
   if (lex() != IDENTIFIER)
-    warn(_("invalid %start declaration"));
+    complain ("%s", _("invalid %start declaration"));
   else
     {
       start_flag = 1;
   else
     {
       start_flag = 1;
@@ -702,7 +693,7 @@ parse_type_decl (void)
 
   if (lex() != TYPENAME)
     {
 
   if (lex() != TYPENAME)
     {
-      warn(_("%type declaration has no <typename>"));
+      complain ("%s", _("%type declaration has no <typename>"));
       skip_to_char('%');
       return;
     }
       skip_to_char('%');
       return;
     }
@@ -719,7 +710,7 @@ parse_type_decl (void)
       if (tmp_char == '%')
        return;
       if (tmp_char == EOF)
       if (tmp_char == '%')
        return;
       if (tmp_char == EOF)
-       fatals ("Premature EOF after %s", token_buffer);
+       fatal (_("Premature EOF after %s"), token_buffer);
 
       t = lex();
 
 
       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)
          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:
 
          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('%');
        }
     }
          skip_to_char('%');
        }
     }
@@ -767,7 +759,7 @@ parse_assoc_decl (int assoc)
       if (tmp_char == '%')
        return;
       if (tmp_char == EOF)
       if (tmp_char == '%')
        return;
       if (tmp_char == EOF)
-       fatals ("Premature EOF after %s", token_buffer);
+       fatal (_("Premature EOF after %s"), token_buffer);
 
       t = lex();
 
 
       t = lex();
 
@@ -785,18 +777,18 @@ parse_assoc_decl (int assoc)
 
        case IDENTIFIER:
          if (symval->prec != 0)
 
        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)
          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)
          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;
 
            }
          break;
 
@@ -808,7 +800,7 @@ parse_assoc_decl (int assoc)
             }
           else
             {
             }
           else
             {
-             warns(_("invalid text (%s) - number should be after identifier"),
+             complain (_("invalid text (%s) - number should be after identifier"),
                        token_buffer);
              skip_to_char('%');
             }
                        token_buffer);
              skip_to_char('%');
             }
@@ -818,7 +810,7 @@ parse_assoc_decl (int assoc)
          return;
 
        default:
          return;
 
        default:
-         warns(_("unexpected item: %s"), token_buffer);
+         complain (_("unexpected item: %s"), token_buffer);
          skip_to_char('%');
        }
 
          skip_to_char('%');
        }
 
@@ -842,7 +834,7 @@ parse_union_decl (void)
   int cplus_comment;
 
   if (typed)
   int cplus_comment;
 
   if (typed)
-    warn(_("multiple %union declarations"));
+    complain ("%s", _("multiple %union declarations"));
 
   typed = 1;
 
 
   typed = 1;
 
@@ -900,7 +892,7 @@ parse_union_decl (void)
                        }
                    }
                  if (c == EOF)
                        }
                    }
                  if (c == EOF)
-                   fatal(_("unterminated comment at end of file"));
+                   fatal (_("unterminated comment at end of file"));
 
                  if (!cplus_comment && c == '*')
                    {
 
                  if (!cplus_comment && c == '*')
                    {
@@ -926,7 +918,7 @@ parse_union_decl (void)
 
        case '}':
          if (count == 0)
 
        case '}':
          if (count == 0)
-           warn (_("unmatched close-brace (`}')"));
+           complain (_("unmatched close-brace (`}')"));
          count--;
          if (count <= 0)
            {
          count--;
          if (count <= 0)
            {
@@ -970,7 +962,7 @@ parse_expect_decl (void)
   ungetc (c, finput);
 
   if (count <= 0 || count > 10)
   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);
 }
 
   expected_conflicts = atoi (buffer);
 }
 
@@ -1002,23 +994,22 @@ copy_at (FILE *finput, FILE *foutput, int stack_offset)
       yylsp_needed = 1;
     }
   else
       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)
 {
 
 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)
     {
   register int i;
   register symbol_list *rp;
 
   if (n < 0)
     {
-      warn(_(msg));
+      complain (_("invalid $ value"));
       return NULL;
     }
 
       return NULL;
     }
 
@@ -1030,7 +1021,7 @@ get_type_name (int n, symbol_list *rule)
       rp = rp->next;
       if (rp == NULL || rp->sym == NULL)
        {
       rp = rp->next;
       if (rp == NULL || rp->sym == NULL)
        {
-         warn(_(msg));
+         complain (_("invalid $ value"));
          return NULL;
        }
       i++;
          return NULL;
        }
       i++;
@@ -1089,7 +1080,7 @@ copy_guard (symbol_list *rule, int stack_offset)
            count--;
          else
            {
            count--;
          else
            {
-             warn(_("unmatched right brace (`}')"));
+             complain (_("unmatched right brace (`}')"));
              c = getc(finput); /* skip it */
            }
           break;
              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)
              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 == '-')
            {
            }
          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)
              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
              continue;
            }
          else
-           warns(_("$%s is invalid"), printable_version(c));
+           complain (_("$%s is invalid"), printable_version (c));
          break;
 
        case '@':
          break;
 
        case '@':
@@ -1164,7 +1156,8 @@ copy_guard (symbol_list *rule, int stack_offset)
          break;
 
        case EOF:
          break;
 
        case EOF:
-         fatal (_("unterminated %%guard clause"));
+         fatal ("%s",
+                _("unterminated %guard clause"));
 
        default:
          putc (c, fguard);
 
        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)
                  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 == '-')
                {
                }
              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)
                  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
                  continue;
                }
              else
-               warns(_("$%s is invalid"), printable_version(c));
+               complain (_("$%s is invalid"), printable_version (c));
 
              break;
 
 
              break;
 
@@ -1304,7 +1297,7 @@ copy_action (symbol_list *rule, int stack_offset)
              break;
 
            case EOF:
              break;
 
            case EOF:
-             fatal(_("unmatched `{'"));
+             fatal (_("unmatched `{'"));
 
            default:
              putc(c, faction);
 
            default:
              putc(c, faction);
@@ -1390,14 +1383,14 @@ readgram (void)
              t = lex();
              if (t != COLON)
                {
              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)
            {
                  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.  */
              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)
              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.  */
 
 
          /* read the rhs of the rule.  */
 
@@ -1526,7 +1519,7 @@ readgram (void)
 
          if (t == PREC)
            {
 
          if (t == PREC)
            {
-             warn(_("two @prec's in a row"));
+             complain (_("two @prec's in a row"));
              t = lex();
              crule->ruleprec = symval;
              t = lex();
              t = lex();
              crule->ruleprec = symval;
              t = lex();
@@ -1534,7 +1527,8 @@ readgram (void)
          if (t == GUARD)
            {
              if (! semantic_parser)
          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();
 
              copy_guard(crule, rulelength);
              t = lex();
@@ -1543,13 +1537,13 @@ readgram (void)
            {
                /* This case never occurs -wjh */
              if (actionflag)
            {
                /* 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();
            }
              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
             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))
              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 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();
        }
          if (t == SEMICOLON)
            t = lex();
        }
@@ -1608,7 +1602,7 @@ readgram (void)
 
       else
        {
 
       else
        {
-         warns(_("invalid input: %s"), token_buffer);
+         complain (_("invalid input: %s"), token_buffer);
          t = lex();
        }
     }
          t = lex();
        }
     }
@@ -1616,10 +1610,10 @@ readgram (void)
   /* grammar has been read.  Do some checking */
 
   if (nsyms > MAXSHORT)
   /* 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)
   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)
 
   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)
       {
   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++;
       }
        bp->class = SNTERM;
        bp->value = nvars++;
       }
@@ -1676,7 +1670,7 @@ get_type (void)
 
   if (t != TYPENAME)
     {
 
   if (t != TYPENAME)
     {
-      warn(_("ill-formed %type declaration"));
+      complain (_("ill-formed %type declaration"));
       return t;
     }
 
       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)
          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;
 
 
          break;
 
@@ -1755,8 +1749,8 @@ packsymbols (void)
            {
              if (bp->prec != 0 && bp->alias->prec != 0
                  && bp->user_token_number == SALIAS)
            {
              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
              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 != 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 */
 
          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)
           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;
         }
     }
           token_translations[bp->user_token_number] = bp->value;
         }
     }
@@ -1832,9 +1826,9 @@ packsymbols (void)
     output_token_defines(ftable);
 
   if (startval->class == SUNKNOWN)
     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)
   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;
 
 
   start_symbol = startval->value;
 
@@ -1898,12 +1892,12 @@ output_token_defines (FILE *file)
       while ((c = *cp++) && c != '.');
       if (c != '\0')  continue;
 
       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)
       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);
     }
 
   putc('\n', file);
index 5e69a69b117d65807ca99023507c6ca2a60cf2c0..3259a912df6677db41d4672da80ba00e39aa9247 100644 (file)
@@ -35,6 +35,7 @@ Boston, MA 02111-1307, USA.  */
 #include "gram.h"
 #include "machine.h"
 #include "alloc.h"
 #include "gram.h"
 #include "machine.h"
 #include "alloc.h"
+#include "complain.h"
 
 
 extern char   **tags;          /* reader.c */
 
 
 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));
 
 static void print_notices PARAMS((void));
 void dump_grammar PARAMS((void));
 
-extern void fatals PARAMS((char *, char *));
 \f
 
 bool
 \f
 
 bool
@@ -138,7 +138,7 @@ reduce_grammar (void)
   print_notices();
 
   if (!BITISSET(N, start_symbol - ntokens))
   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();
           tags[start_symbol]);
 
   reduce_grammar_tables();
index e53fef40cdd48b2619e77d445de3731835652c48..d878feb24752dd65dfa06dddf41809e2c6fec4ad 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
 
 #ifndef BISON_SYSTEM_H
 #define BISON_SYSTEM_H
 
 #endif
 
 #ifdef MSDOS
 #endif
 
 #ifdef MSDOS
-#include <io.h>
+# include <io.h>
 #endif
 
 #ifdef _MSC_VER
 #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)
 #endif
 
 #if defined(HAVE_STDLIB_H) || defined(MSDOS)
-#include <stdlib.h>
+# include <stdlib.h>
 #endif
 
 #if defined(HAVE_UNISTD_H)
 #endif
 
 #if defined(HAVE_UNISTD_H)
-#include <unistd.h>
+# include <unistd.h>
 #endif
 
 #if (defined(VMS) || defined(MSDOS)) && !defined(HAVE_STRING_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)
 #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.  */
 /* 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 */
 #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)
 /* 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
 
 #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
 #ifdef HAVE_LOCALE_H
 # include <locale.h>
 #endif
 #endif
 #define N_(Text) Text
 
 #endif
 #define N_(Text) Text
 
+
+/*-------------------------------.
+| Fix broken compilation flags.  |
+`-------------------------------*/
+
 #ifndef LOCALEDIR
 #ifndef LOCALEDIR
-#define LOCALEDIR "/usr/local/share/locale"
+# define LOCALEDIR "/usr/local/share/locale"
 #endif
 
 #endif  /* BISON_SYSTEM_H */
 #endif
 
 #endif  /* BISON_SYSTEM_H */