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