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'.
This commit is contained in:
Akim Demaille
2000-03-31 13:54:30 +00:00
parent 10a9273b34
commit a0f6b07611
24 changed files with 1235 additions and 890 deletions

View File

@@ -1,3 +1,24 @@
2000-03-31 Akim Demaille <akim@epita.fr>
Clean the error reporting functions.
* src/report.c: New file.
* src/report.h: Likewise.
* src/Makefile.am: Adjust.
* m4/error.m4: New file.
* m4/Makefile.am: Adjust.
* configure.in (jm_PREREQ_ERROR): Call it.
* src/main.c (int_to_string, banner, fatal_banner, warn_banner):
Remove.
(fatal, fatals): Remove. All callers use complain.c::fatal.
(warn, warni, warns, warnss, warnss): Remove. All callers use
complain.c::complain.
(toomany): Remove, use fatal instead.
* src/files.c (done): No argument, use complain_message_count.
* src/main.c (main): Register `done' to `atexit'.
* src/getargs.c (usage): More `fputs', less `fprintf'.
2000-03-28 Akim Demaille <akim@epita.fr>
* lib/: New directory.

View File

@@ -36,6 +36,7 @@ AC_CHECK_FUNCS(mkstemp setlocale)
BISON_NEED_DECLARATIONS(calloc realloc)
AM_GNU_GETTEXT
jm_PREREQ_ERROR
# This is necessary so that .o files in LIBOBJS are also built via
# the ANSI2KNR-filtering rules.

View File

@@ -7,8 +7,7 @@ noinst_LIBRARIES = libbison.a
INCLUDES = -I.. -I$(srcdir) -I../intl
libbison_a_SOURCES = getopt.c getopt1.c
noinst_HEADERS = getopt.h
libbison_a_LIBADD = @LIBOBJS@ @ALLOCA@
libbison_a_DEPENDENCIES = $(libbison_a_LIBADD)
noinst_HEADERS = getopt.h

View File

@@ -1,2 +1,2 @@
## Process this file with automake to produce Makefile.in -*-Makefile-*-
EXTRA_DIST = bison-decl.m4 gettext.m4 lcmessage.m4 progtest.m4
EXTRA_DIST = bison-decl.m4 error.m4 gettext.m4 lcmessage.m4 progtest.m4

11
m4/error.m4 Normal file
View File

@@ -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
])

214
po/de.po
View File

@@ -5,7 +5,7 @@
msgid ""
msgstr ""
"Project-Id-Version: bison 1.25\n"
"POT-Creation-Date: 2000-03-28 14:20+0200\n"
"POT-Creation-Date: 2000-03-31 15:40+0200\n"
"PO-Revision-Date: 1996-10-10 17:54 MET DST\n"
"Last-Translator: Ulrich Drepper <drepper@gnu.ai.mit.edu>\n"
"Language-Team: German <de@li.org>\n"
@@ -13,6 +13,11 @@ msgstr ""
"Content-Type: text/plain; charset=ISO-8859-1\n"
"Content-Transfer-Encoding: 8-bit\n"
#: src/LR0.c:377
#, c-format
msgid "too many states (max %d)"
msgstr ""
#: src/allocate.c:59 src/allocate.c:75
#, c-format
msgid "%s: memory exhausted\n"
@@ -170,75 +175,67 @@ msgstr ""
msgid "Report bugs to <bug-bison@gnu.org>.\n"
msgstr ""
#: src/getargs.c:196
#: src/getargs.c:195
#, c-format
msgid "%s: no grammar file given\n"
msgstr "%s: keine Grammatik-Datei angegeben\n"
#: src/getargs.c:200
#: src/getargs.c:199
#, fuzzy, c-format
msgid "%s: extra arguments ignored after `%s'\n"
msgstr "%s: zusätzliche Argumente nach »%s« werden ignoriert\n"
#: src/lalr.c:294
msgid "gotos"
msgstr "»goto« Anweisungen"
#: src/lalr.c:293
#, c-format
msgid "too many gotos (max %d)"
msgstr ""
#: src/lex.c:119
#: src/lex.c:115
msgid "unexpected `/' found and ignored"
msgstr "»/« wird hier nicht erwartet und wird deshalb ignoriert"
#: src/lex.c:148 src/reader.c:258
#: src/lex.c:144 src/reader.c:248
msgid "unterminated comment"
msgstr "unbeendeter Kommentar"
#: src/lex.c:176
msgid "Unexpected end of file"
#: src/lex.c:172
#, fuzzy
msgid "unexpected end of file"
msgstr "Datei endet unerwartet"
# Oder soll man den Begriff "Escapezeichen" verwenden?
#: src/lex.c:197
#: src/lex.c:193
msgid "unescaped newline in constant"
msgstr "nicht maskiertes Zeilenendezeichen in Konstante"
#: src/lex.c:229
#: src/lex.c:225
#, c-format
msgid "octal value outside range 0...255: `\\%o'"
msgstr "oktaler Zahlenwert außerhalb des Bereichs 0...255: »\\%o«"
#: src/lex.c:253
#: src/lex.c:250
#, c-format
msgid "hexadecimal value above 255: `\\x%x'"
msgstr "hexadezimaler Zahlenwert größer als 255: »\\x%x«"
#: src/lex.c:263
#: src/lex.c:261
#, c-format
msgid "unknown escape sequence: `\\' followed by `%s'"
msgstr "unbekanntes Fluchtzeichen: »\\« gefolgt von »%s«"
#: src/lex.c:396
#: src/lex.c:394
msgid "use \"...\" for multi-character literal tokens"
msgstr "für Literal mit mehreren Zeichen bitte \"...\" verwenden"
#: src/lex.c:475
#: src/lex.c:473
msgid "unterminated type name at end of file"
msgstr "unerwarteter Typname am Ende der Datei"
#: src/lex.c:478
#: src/lex.c:476
msgid "unterminated type name"
msgstr "unerwarteter Typname"
#: src/main.c:163
#, fuzzy
msgid "fatal error: "
msgstr "fataler Fehler: %s\n"
#: src/main.c:258
#, c-format
msgid "too many %s (max %d)"
msgstr ""
#: src/main.c:268
#: src/main.c:137
#, fuzzy, c-format
msgid "%s: internal error: %s\n"
msgstr "interner Fehler, %s\n"
@@ -247,9 +244,9 @@ msgstr "interner Fehler, %s\n"
msgid "Entering set_nullable"
msgstr "Führe »set_nullable« aus"
#: src/output.c:1201
#, c-format
msgid "maximum table size (%s) exceeded"
#: src/output.c:1199
#, fuzzy, c-format
msgid "maximum table size (%d) exceeded"
msgstr "maximale Tabellengröße (%s) überschritten"
#: src/print.c:85
@@ -351,236 +348,244 @@ msgstr " auf der linken Seite:"
msgid " on right:"
msgstr " auf der rechten Seite:"
#: src/reader.c:163
#: src/reader.c:154
msgid " Skipping to next \\n"
msgstr " Überspringe Zeichen bis zum nächsten \\n"
#: src/reader.c:165
#: src/reader.c:156
#, c-format
msgid " Skipping to next %c"
msgstr " Überspringe Zeichen bis zum nächten %c"
#: src/reader.c:189 src/reader.c:204
#: src/reader.c:180 src/reader.c:195
msgid "unterminated string at end of file"
msgstr "unbeendete Zeichenkette am Ende der Datei"
#: src/reader.c:192
#: src/reader.c:183
msgid "unterminated string"
msgstr "unbeendete Zeichenkette"
#: src/reader.c:434
#: src/reader.c:424
#, c-format
msgid "unrecognized: %s"
msgstr "unbekannt: %s"
#: src/reader.c:439
#: src/reader.c:429
msgid "no input grammar"
msgstr "keine Eingabe-Grammatik"
#: src/reader.c:442
#: src/reader.c:432
#, c-format
msgid "unknown character: %s"
msgstr "unbekanntes Zeichen: %s"
#: src/reader.c:493
#: src/reader.c:484
msgid "unterminated `%{' definition"
msgstr "unbeendete »%{« Definition"
#: src/reader.c:571 src/reader.c:792
#: src/reader.c:525 src/reader.c:713 src/reader.c:762
#, c-format
msgid "Premature EOF after %s"
msgstr ""
#: src/reader.c:562 src/reader.c:784
#, c-format
msgid "symbol %s redefined"
msgstr "Symbol %s noch einmal definiert"
#: src/reader.c:581 src/reader.c:737 src/reader.c:799 src/reader.c:1703
#: src/reader.c:572 src/reader.c:728 src/reader.c:791 src/reader.c:1697
#, c-format
msgid "type redeclaration for %s"
msgstr "erneute Deklaration des Typs für %s"
#: src/reader.c:591
#: src/reader.c:582
#, c-format
msgid "`%s' is invalid in %s"
msgstr "»%s« ist in %s nicht erlaubt"
#: src/reader.c:639
#: src/reader.c:630
#, c-format
msgid "unrecognized item %s, expected an identifier"
msgstr "unerwartetes Symbol %s, hier wird ein Bezeichner erwartet"
#: src/reader.c:661
#: src/reader.c:652
#, c-format
msgid "expected string constant instead of %s"
msgstr "hier wird eine Zeichenkette erwartet, nicht %s"
#: src/reader.c:683
#: src/reader.c:674
#, c-format
msgid "multiple %start declarations"
msgstr "mehr als eine %start Deklaration"
#: src/reader.c:685
#: src/reader.c:676
#, c-format
msgid "invalid %start declaration"
msgstr "ungültige %start Deklaration"
#: src/reader.c:705
#: src/reader.c:696
msgid "%type declaration has no <typename>"
msgstr "%type Deklaration hat keinen <Typ-Namen>"
#: src/reader.c:742
msgid "invalid %%type declaration due to item: `%s'"
#: src/reader.c:733
#, fuzzy
msgid "invalid %%type declaration due to item: %s"
msgstr "ungültige %%type Deklaration wegen »%s«"
#: src/reader.c:788
#: src/reader.c:780
#, c-format
msgid "redefining precedence of %s"
msgstr "Stellenwertigkeit von %s wird erneut definiert"
#: src/reader.c:811
#: src/reader.c:803
#, c-format
msgid "invalid text (%s) - number should be after identifier"
msgstr "unzulässiger Text (%s) - Nummer sollte nach Bezeichner kommen"
#: src/reader.c:821
#: src/reader.c:813
#, c-format
msgid "unexpected item: %s"
msgstr "unerwartetes Symbol: %s"
#: src/reader.c:845
#: src/reader.c:837
#, c-format
msgid "multiple %union declarations"
msgstr "erneute %union Definition"
#: src/reader.c:903
#: src/reader.c:895
msgid "unterminated comment at end of file"
msgstr "unbeendeter Kommentar am Dateiende"
#: src/reader.c:929
#: src/reader.c:921
msgid "unmatched close-brace (`}')"
msgstr "schließende geschweifte Klammer (»}«) hat kein Gegenstück"
#: src/reader.c:973
#: src/reader.c:965
#, c-format
msgid "argument of %expect is not an integer"
msgstr "Argument von %expect ist keine ganze Zahl"
#: src/reader.c:1005
#: src/reader.c:997
#, c-format
msgid "@%s is invalid"
msgstr "@%s ist unzulässig"
#: src/reader.c:1014
#: src/reader.c:1012 src/reader.c:1024
msgid "invalid $ value"
msgstr "unzulässiger $ Wert"
#: src/reader.c:1092
#: src/reader.c:1083
msgid "unmatched right brace (`}')"
msgstr "schließende geschweifte Klammer (»}«) hat kein Gegenstück"
#: src/reader.c:1139 src/reader.c:1277
#: src/reader.c:1130 src/reader.c:1270
#, c-format
msgid "$$ of `%s' has no declared type"
msgstr "$$ von »%s« hat keine deklarierten Wert"
#: src/reader.c:1154 src/reader.c:1293
#, c-format
msgid "$%s of `%s' has no declared type"
#: src/reader.c:1146 src/reader.c:1286
#, fuzzy, c-format
msgid "$%d of `%s' has no declared type"
msgstr "»%s« von »%s« hat keine deklarierten Wert"
#: src/reader.c:1159 src/reader.c:1298
#: src/reader.c:1151 src/reader.c:1291
#, c-format
msgid "$%s is invalid"
msgstr "$%s ist unzulässig"
#: src/reader.c:1167
msgid "unterminated %%guard clause"
#: src/reader.c:1160
#, fuzzy, c-format
msgid "unterminated %guard clause"
msgstr "unbeendeter %%guard Fall"
#: src/reader.c:1307
#: src/reader.c:1300
msgid "unmatched `{'"
msgstr "»{« hat kein Gegenstück"
#: src/reader.c:1393
#: src/reader.c:1386
msgid "ill-formed rule: initial symbol not followed by colon"
msgstr ""
"falsch geformte Regel: führendes Symbol wird nicht von einem Semikolon "
"gefolgt"
#: src/reader.c:1400
#: src/reader.c:1393
msgid "grammar starts with vertical bar"
msgstr "Grammatik fängt mit einem vertikalen Strich (»|«) an"
#: src/reader.c:1431
#: src/reader.c:1424
#, c-format
msgid "rule given for %s, which is a token"
msgstr "Regel für %s vorhanden, welches aber ein Token ist"
#: src/reader.c:1529
#: src/reader.c:1522
msgid "two @prec's in a row"
msgstr "zwei @prec Anweisungen nacheinander"
#: src/reader.c:1537
msgid "%%guard present but %%semantic_parser not specified"
#: src/reader.c:1531
#, fuzzy, c-format
msgid "%guard present but %semantic_parser not specified"
msgstr ""
"%%guard Anweisung vorhanden, jedoch wird %%semantic_parser nicht angegeben"
#: src/reader.c:1546
#: src/reader.c:1540
msgid "two actions at end of one rule"
msgstr "Zwei Aktionen am Ende einer Regel"
#: src/reader.c:1561
#: src/reader.c:1555
#, c-format
msgid "type clash (`%s' `%s') on default action"
msgstr "Typkonflikt (»%s« »%s«) bei Default Aktion"
#: src/reader.c:1567
#: src/reader.c:1561
msgid "empty rule for typed nonterminal, and no action"
msgstr "leere Regel für Nicht-Terminal vmit Typ und keine Aktion"
#: src/reader.c:1611
#: src/reader.c:1605
#, c-format
msgid "invalid input: %s"
msgstr "ungültige Eingabe: %s"
#: src/reader.c:1619
#, c-format
msgid "too many symbols (tokens plus nonterminals); maximum %s"
#: src/reader.c:1613
#, fuzzy, c-format
msgid "too many symbols (tokens plus nonterminals); maximum %d"
msgstr "zu viele Symbols (Token plus Nicht-Terminal); Maximum %s"
#: src/reader.c:1622
#: src/reader.c:1616
msgid "no rules in the input grammar"
msgstr "Eingabegrammatik enthält keine Regeln"
#: src/reader.c:1640
#: src/reader.c:1634
#, c-format
msgid "symbol %s is used, but is not defined as a token and has no rules"
msgstr ""
"Symbol %s wird benutzt, ist aber nicht als Token definiert und hat keine "
"Regel"
#: src/reader.c:1679
#: src/reader.c:1673
msgid "ill-formed %type declaration"
msgstr "falsch geformte %type Deklaration"
#: src/reader.c:1758
#: src/reader.c:1752
#, c-format
msgid "conflicting precedences for %s and %s"
msgstr "Vorrangwertigkeiten für %s und %s widersprechen sich"
#: src/reader.c:1770
#: src/reader.c:1764
#, c-format
msgid "conflicting assoc values for %s and %s"
msgstr "assoc Werte für %s nd %s widersprechen sich"
#: src/reader.c:1821
#, c-format
msgid "tokens %s and %s both assigned number %s"
#: src/reader.c:1815
#, fuzzy, c-format
msgid "tokens %s and %s both assigned number %d"
msgstr "Token %s und %s haben die selbe nummer %s"
#: src/reader.c:1835
#: src/reader.c:1829
#, c-format
msgid "the start symbol %s is undefined"
msgstr "das Startsymbol %s ist undefiniert"
#: src/reader.c:1837
#: src/reader.c:1831
#, c-format
msgid "the start symbol %s is a token"
msgstr "das Startsymbol %s ist ein Token"
@@ -688,65 +693,72 @@ msgstr " und "
msgid "%d useless rule%s"
msgstr "%d ungenutzte Regel"
#: src/getopt.c:675
#: lib/getopt.c:675
#, c-format
msgid "%s: option `%s' is ambiguous\n"
msgstr "%s: die Option »%s« ist nicht eindeutig\n"
#: src/getopt.c:700
#: lib/getopt.c:700
#, c-format
msgid "%s: option `--%s' doesn't allow an argument\n"
msgstr "%s: die Option »--%s« erlaubt kein Argument\n"
#: src/getopt.c:705
#: lib/getopt.c:705
#, c-format
msgid "%s: option `%c%s' doesn't allow an argument\n"
msgstr "%s: die Option »%c%s« erlaubt kein Argument\n"
#: src/getopt.c:723 src/getopt.c:896
#: lib/getopt.c:723 lib/getopt.c:896
#, c-format
msgid "%s: option `%s' requires an argument\n"
msgstr "%s: die Option »%s« erfordert ein Argument\n"
#. --option
#: src/getopt.c:752
#: lib/getopt.c:752
#, c-format
msgid "%s: unrecognized option `--%s'\n"
msgstr "%s: unbekannte Option »--%s«\n"
#. +option or -option
#: src/getopt.c:756
#: lib/getopt.c:756
#, c-format
msgid "%s: unrecognized option `%c%s'\n"
msgstr "%s: unbekannte Option »%c%s«\n"
#. 1003.2 specifies the format of this message.
#: src/getopt.c:782
#: lib/getopt.c:782
#, c-format
msgid "%s: illegal option -- %c\n"
msgstr "%s: die Option ist nicht erlaubt -- %c\n"
#: src/getopt.c:785
#: lib/getopt.c:785
#, c-format
msgid "%s: invalid option -- %c\n"
msgstr "%s: ungültige Option -- %c\n"
#. 1003.2 specifies the format of this message.
#: src/getopt.c:815 src/getopt.c:945
#: lib/getopt.c:815 lib/getopt.c:945
#, c-format
msgid "%s: option requires an argument -- %c\n"
msgstr "%s: die Option benötigt ein Argument -- %c\n"
#: src/getopt.c:862
#: lib/getopt.c:862
#, fuzzy, c-format
msgid "%s: option `-W %s' is ambiguous\n"
msgstr "%s: die Option »%s« ist nicht eindeutig\n"
#: src/getopt.c:880
#: lib/getopt.c:880
#, fuzzy, c-format
msgid "%s: option `-W %s' doesn't allow an argument\n"
msgstr "%s: die Option »--%s« erlaubt kein Argument\n"
#~ msgid "gotos"
#~ msgstr "»goto« Anweisungen"
#, fuzzy
#~ msgid "fatal error: "
#~ msgstr "fataler Fehler: %s\n"
#, fuzzy
#~ msgid ""
#~ "Usage: %s [-dhklntvyV] [-b file-prefix] [-o outfile] [-p name-prefix]\n"

246
po/es.po
View File

@@ -30,7 +30,7 @@
msgid ""
msgstr ""
"Project-Id-Version: GNU bison 1.25\n"
"POT-Creation-Date: 2000-03-28 14:20+0200\n"
"POT-Creation-Date: 2000-03-31 15:40+0200\n"
"PO-Revision-Date: 1998-09-21 10:19+0200\n"
"Last-Translator: Nicolás García-Pedrajas <ngarcia-pedrajas@acm.org>\n"
"Language-Team: Spanish <es@li.org>\n"
@@ -38,6 +38,11 @@ msgstr ""
"Content-Type: text/plain; charset=ISO-8859-1\n"
"Content-Transfer-Encoding: 8-bit\n"
#: src/LR0.c:377
#, c-format
msgid "too many states (max %d)"
msgstr ""
#: src/allocate.c:59 src/allocate.c:75
#, c-format
msgid "%s: memory exhausted\n"
@@ -227,94 +232,70 @@ msgstr ""
# Me parece menos "computadora" decir "ningún fichero de gramática" - cll
#
#: src/getargs.c:196
#: src/getargs.c:195
#, c-format
msgid "%s: no grammar file given\n"
msgstr "%s: no se ha especificado ningún fichero de gramática\n"
# Ignorar es no saber, to ignore es no hacer caso, que no es lo mismo. sv
#: src/getargs.c:200
#: src/getargs.c:199
#, fuzzy, c-format
msgid "%s: extra arguments ignored after `%s'\n"
msgstr "%s: los argumentos extra después de '%s' no se tendrán en cuenta\n"
# Duda: desconozco en qué caso se emplea esto. Estúdialo bien y
# comprueba que realmente es necesario emplear una palabra no
# española. Recuerda que el acuerdo que existe en la lista de correo en
# español es, en el peor de los casos, poner algo en español y luego en
# inglés a modo de recordatorio. Por ejemplo: "tubería (pipe)" - cll
#
# miré el código, lo que indica es el número de gotos del código
# ngp
#
#: src/lalr.c:294
msgid "gotos"
msgstr "saltos (gotos)"
#: src/lalr.c:293
#, c-format
msgid "too many gotos (max %d)"
msgstr ""
# to ignore no es ignorar. Pon otra cosa, please. sv
#: src/lex.c:119
#: src/lex.c:115
msgid "unexpected `/' found and ignored"
msgstr "se ha encontrado `/' cuando no se esperaba, no se tendrán en cuenta"
#: src/lex.c:148 src/reader.c:258
#: src/lex.c:144 src/reader.c:248
msgid "unterminated comment"
msgstr "comentario sin terminar"
#: src/lex.c:176
msgid "Unexpected end of file"
#: src/lex.c:172
#, fuzzy
msgid "unexpected end of file"
msgstr "Fin de fichero inesperado"
# ¿unescaped?
#: src/lex.c:197
#: src/lex.c:193
msgid "unescaped newline in constant"
msgstr "salto de línea en constante sin secuencia de escape"
#: src/lex.c:229
#: src/lex.c:225
#, c-format
msgid "octal value outside range 0...255: `\\%o'"
msgstr "valor octal fuera del rango 0...255: `\\%o'"
#: src/lex.c:253
#: src/lex.c:250
#, c-format
msgid "hexadecimal value above 255: `\\x%x'"
msgstr "valor hexadecimal mayor que 255: `\\x%x'"
#: src/lex.c:263
#: src/lex.c:261
#, c-format
msgid "unknown escape sequence: `\\' followed by `%s'"
msgstr "secuencia de escape desconocida: `\\' seguido de `%s'"
# ¿multicarácter o multicaracteres? sv
#: src/lex.c:396
#: src/lex.c:394
msgid "use \"...\" for multi-character literal tokens"
msgstr "use \"...\" para terminales literales multicarácter"
#: src/lex.c:475
#: src/lex.c:473
msgid "unterminated type name at end of file"
msgstr "nombre de tipo sin terminar al final del fichero"
#: src/lex.c:478
#: src/lex.c:476
msgid "unterminated type name"
msgstr "nombre de tipo sin terminar"
# Duda: desconozco cuál será el convenio en la lista de correo a
# propósito de "fatal". Por favor, comprueba que "error grave" es
# preferido por todos los miembros a "error fatal" - cll
# veremos que dice la mayoría, como hay otros 2 revisores
# La verdad es que a mi lo de error fatal me suena fatal
# ngp
#
#: src/main.c:163
#, fuzzy
msgid "fatal error: "
msgstr "error grave: %s\n"
#: src/main.c:258
#, c-format
msgid "too many %s (max %d)"
msgstr ""
#: src/main.c:268
#: src/main.c:137
#, fuzzy, c-format
msgid "%s: internal error: %s\n"
msgstr "error interno, %s\n"
@@ -328,9 +309,9 @@ msgstr "Entrando set_nullable"
# en inglés era así, pero quizás en español sea mejor como dices
# ngp
#
#: src/output.c:1201
#, c-format
msgid "maximum table size (%s) exceeded"
#: src/output.c:1199
#, fuzzy, c-format
msgid "maximum table size (%d) exceeded"
msgstr "excedido el tamaño máximo de la tabla (%s)"
#: src/print.c:85
@@ -436,52 +417,57 @@ msgstr " en la izquierda:"
msgid " on right:"
msgstr " en la derecha:"
#: src/reader.c:163
#: src/reader.c:154
msgid " Skipping to next \\n"
msgstr " Saltando al siguiente \\n"
#: src/reader.c:165
#: src/reader.c:156
#, c-format
msgid " Skipping to next %c"
msgstr " Saltando al siguiente %c"
#: src/reader.c:189 src/reader.c:204
#: src/reader.c:180 src/reader.c:195
msgid "unterminated string at end of file"
msgstr "cadena sin terminar al final del fichero"
#: src/reader.c:192
#: src/reader.c:183
msgid "unterminated string"
msgstr "cadena sin terminar"
#: src/reader.c:434
#: src/reader.c:424
#, c-format
msgid "unrecognized: %s"
msgstr "no reconocido: %s"
#: src/reader.c:439
#: src/reader.c:429
msgid "no input grammar"
msgstr "no hay gramática de entrada"
#: src/reader.c:442
#: src/reader.c:432
#, c-format
msgid "unknown character: %s"
msgstr "carácter desconocido: %s"
#: src/reader.c:493
#: src/reader.c:484
msgid "unterminated `%{' definition"
msgstr "definición `%{' sin terminar"
#: src/reader.c:571 src/reader.c:792
#: src/reader.c:525 src/reader.c:713 src/reader.c:762
#, c-format
msgid "Premature EOF after %s"
msgstr ""
#: src/reader.c:562 src/reader.c:784
#, c-format
msgid "symbol %s redefined"
msgstr "redefinido el símbolo %s"
#: src/reader.c:581 src/reader.c:737 src/reader.c:799 src/reader.c:1703
#: src/reader.c:572 src/reader.c:728 src/reader.c:791 src/reader.c:1697
#, c-format
msgid "type redeclaration for %s"
msgstr "redeclaración del tipo de %s"
#: src/reader.c:591
#: src/reader.c:582
#, c-format
msgid "`%s' is invalid in %s"
msgstr "`%s' no es válido en %s"
@@ -492,35 +478,36 @@ msgstr "`%s' no es v
# - cll
# ok - ngp
#
#: src/reader.c:639
#: src/reader.c:630
#, c-format
msgid "unrecognized item %s, expected an identifier"
msgstr "no se reconoce el ítem %s, se esperaba un identificador"
#: src/reader.c:661
#: src/reader.c:652
#, c-format
msgid "expected string constant instead of %s"
msgstr "se esperaba una cadena constante en lugar de %s"
#: src/reader.c:683
#: src/reader.c:674
#, c-format
msgid "multiple %start declarations"
msgstr "múltiples declaraciones de %start"
#: src/reader.c:685
#: src/reader.c:676
#, c-format
msgid "invalid %start declaration"
msgstr "declaración de %start no válida"
#: src/reader.c:705
#: src/reader.c:696
msgid "%type declaration has no <typename>"
msgstr "la declaración %type no tiene <nombre-tipo>"
#: src/reader.c:742
msgid "invalid %%type declaration due to item: `%s'"
#: src/reader.c:733
#, fuzzy
msgid "invalid %%type declaration due to item: %s"
msgstr "declaración de %%type no válida debido al ítem: `%s'"
#: src/reader.c:788
#: src/reader.c:780
#, c-format
msgid "redefining precedence of %s"
msgstr "redefinición de la precedencia de %s"
@@ -529,7 +516,7 @@ msgstr "redefinici
# de "to must" y aquí se emplea en su forma condicional. Por eso, he
# cambiado `debe' por `debería' - cll
# ahí me has pillado en un olvido del inglés - ngp
#: src/reader.c:811
#: src/reader.c:803
#, c-format
msgid "invalid text (%s) - number should be after identifier"
msgstr ""
@@ -539,53 +526,53 @@ msgstr ""
# otras, como `inesperado'. Cualquiera es correcta, por supuesto y, en
# este caso, la segunda me parece más apropiada - cll
# ok - ngp
#: src/reader.c:821
#: src/reader.c:813
#, c-format
msgid "unexpected item: %s"
msgstr "ítem inesperado: %s"
#: src/reader.c:845
#: src/reader.c:837
#, c-format
msgid "multiple %union declarations"
msgstr "declaraciones múltiples de %union"
#: src/reader.c:903
#: src/reader.c:895
msgid "unterminated comment at end of file"
msgstr "comentario sin terminar al final del fichero"
#: src/reader.c:929
#: src/reader.c:921
msgid "unmatched close-brace (`}')"
msgstr "llave de cierre (`}') desemparejada"
#: src/reader.c:973
#: src/reader.c:965
#, c-format
msgid "argument of %expect is not an integer"
msgstr "el argumento de %expect no es un entero"
#: src/reader.c:1005
#: src/reader.c:997
#, c-format
msgid "@%s is invalid"
msgstr "@%s no es válido"
#: src/reader.c:1014
#: src/reader.c:1012 src/reader.c:1024
msgid "invalid $ value"
msgstr "valor $ no válido"
#: src/reader.c:1092
#: src/reader.c:1083
msgid "unmatched right brace (`}')"
msgstr "llave derecha (`}') desemparejada"
#: src/reader.c:1139 src/reader.c:1277
#: src/reader.c:1130 src/reader.c:1270
#, c-format
msgid "$$ of `%s' has no declared type"
msgstr "$$ de `%s' no tiene tipo declarado"
#: src/reader.c:1154 src/reader.c:1293
#, c-format
msgid "$%s of `%s' has no declared type"
#: src/reader.c:1146 src/reader.c:1286
#, fuzzy, c-format
msgid "$%d of `%s' has no declared type"
msgstr "$%s de `%s' no tiene tipo declarado"
#: src/reader.c:1159 src/reader.c:1298
#: src/reader.c:1151 src/reader.c:1291
#, c-format
msgid "$%s is invalid"
msgstr "$%s no es válida"
@@ -594,100 +581,102 @@ msgstr "$%s no es v
# mejor que `sin terminar' que me parece más "computerizado" - cll
# quizás un poco cacofónico lo de claúsula inconclusa - ngp
#
#: src/reader.c:1167
msgid "unterminated %%guard clause"
#: src/reader.c:1160
#, fuzzy, c-format
msgid "unterminated %guard clause"
msgstr "cláusula %%guard sin terminar"
# Cambio el orden y el sexo. Ahora está "en español". sv
#: src/reader.c:1307
#: src/reader.c:1300
msgid "unmatched `{'"
msgstr "`{' desemparejada"
#: src/reader.c:1393
#: src/reader.c:1386
msgid "ill-formed rule: initial symbol not followed by colon"
msgstr "regla mal formada: el símbolo inicial no está seguido por :"
#: src/reader.c:1400
#: src/reader.c:1393
msgid "grammar starts with vertical bar"
msgstr "la gramática comienza con una barra vertical"
#: src/reader.c:1431
#: src/reader.c:1424
#, c-format
msgid "rule given for %s, which is a token"
msgstr "se ha dado una regla para %s, que es un terminal"
#: src/reader.c:1529
#: src/reader.c:1522
msgid "two @prec's in a row"
msgstr "dos @prec en una línea"
# Insisto, el empleo de participios a secas me parece como hablar en
# indio. Por favor, permíteme que añada un "está" :) - cll
# ok - ngp
#: src/reader.c:1537
msgid "%%guard present but %%semantic_parser not specified"
#: src/reader.c:1531
#, fuzzy, c-format
msgid "%guard present but %semantic_parser not specified"
msgstr "%%guard presente pero %%semantic_parser está sin especificar"
#: src/reader.c:1546
#: src/reader.c:1540
msgid "two actions at end of one rule"
msgstr "dos acciones al final de una regla"
#: src/reader.c:1561
#: src/reader.c:1555
#, c-format
msgid "type clash (`%s' `%s') on default action"
msgstr "los tipos (`%s' `%s') no concuerdan en la acción por defecto"
#: src/reader.c:1567
#: src/reader.c:1561
msgid "empty rule for typed nonterminal, and no action"
msgstr "regla vacía para un no terminal con tipo y no hay ninguna acción"
#: src/reader.c:1611
#: src/reader.c:1605
#, c-format
msgid "invalid input: %s"
msgstr "entrada no válida: %s"
#: src/reader.c:1619
#, c-format
msgid "too many symbols (tokens plus nonterminals); maximum %s"
#: src/reader.c:1613
#, fuzzy, c-format
msgid "too many symbols (tokens plus nonterminals); maximum %d"
msgstr "demasiados símbolos (terminales y no terminales); máximo %s"
#: src/reader.c:1622
#: src/reader.c:1616
msgid "no rules in the input grammar"
msgstr "no hay reglas en la gramática de entrada"
# `token' se debe traducir como `literal' - cll
# en terminología de compiladores token es más un terminal - ngp
#
#: src/reader.c:1640
#: src/reader.c:1634
#, c-format
msgid "symbol %s is used, but is not defined as a token and has no rules"
msgstr ""
"se usa el símbolo %s, pero no está definido como terminal y no tiene reglas"
#: src/reader.c:1679
#: src/reader.c:1673
msgid "ill-formed %type declaration"
msgstr "declaración %type incorrectamente formada"
#: src/reader.c:1758
#: src/reader.c:1752
#, c-format
msgid "conflicting precedences for %s and %s"
msgstr "precedencias en conflicto entre %s y %s"
#: src/reader.c:1770
#: src/reader.c:1764
#, c-format
msgid "conflicting assoc values for %s and %s"
msgstr "conflicto de valores assoc para %s y %s"
#: src/reader.c:1821
#, c-format
msgid "tokens %s and %s both assigned number %s"
#: src/reader.c:1815
#, fuzzy, c-format
msgid "tokens %s and %s both assigned number %d"
msgstr "los terminales %s y %s tienen asignados ambos el número %s"
#: src/reader.c:1835
#: src/reader.c:1829
#, c-format
msgid "the start symbol %s is undefined"
msgstr "el símbolo de inicio (axioma) %s no está definido"
#: src/reader.c:1837
#: src/reader.c:1831
#, c-format
msgid "the start symbol %s is a token"
msgstr "el símbolo de inicio (axioma) %s es un terminal"
@@ -807,35 +796,35 @@ msgstr " y "
msgid "%d useless rule%s"
msgstr "%d regla%s sin uso"
#: src/getopt.c:675
#: lib/getopt.c:675
#, c-format
msgid "%s: option `%s' is ambiguous\n"
msgstr "%s: la opción `%s' es ambigua\n"
# Pongo esto como en otros .po. sv
#: src/getopt.c:700
#: lib/getopt.c:700
#, c-format
msgid "%s: option `--%s' doesn't allow an argument\n"
msgstr "%s: la opción `--%s' no admite ningún argumento\n"
#: src/getopt.c:705
#: lib/getopt.c:705
#, c-format
msgid "%s: option `%c%s' doesn't allow an argument\n"
msgstr "%s: la opción `%c%s' no admite ningún argumento\n"
#: src/getopt.c:723 src/getopt.c:896
#: lib/getopt.c:723 lib/getopt.c:896
#, c-format
msgid "%s: option `%s' requires an argument\n"
msgstr "%s: la opción `%s' requiere un argumento\n"
#. --option
#: src/getopt.c:752
#: lib/getopt.c:752
#, c-format
msgid "%s: unrecognized option `--%s'\n"
msgstr "%s: opción `--%s' no reconocida\n"
#. +option or -option
#: src/getopt.c:756
#: lib/getopt.c:756
#, c-format
msgid "%s: unrecognized option `%c%s'\n"
msgstr "%s: opción `%c%s' no reconocida\n"
@@ -858,7 +847,7 @@ msgstr "%s: opci
# a la cárcel (como mucho se cuelgan, je, je, 0ff0 :-). sv
#
#. 1003.2 specifies the format of this message.
#: src/getopt.c:782
#: lib/getopt.c:782
#, c-format
msgid "%s: illegal option -- %c\n"
msgstr "%s: opción -- %c ilegal\n"
@@ -868,28 +857,51 @@ msgstr "%s: opci
# Porque Enrique decía que le recordaba a disminuidos físicos.
# Francamente, no creo que haya que andar con estas "fobias".
# Pongo inválida. sv
#: src/getopt.c:785
#: lib/getopt.c:785
#, c-format
msgid "%s: invalid option -- %c\n"
msgstr "%s: opción -- %c inválida\n"
#. 1003.2 specifies the format of this message.
#: src/getopt.c:815 src/getopt.c:945
#: lib/getopt.c:815 lib/getopt.c:945
#, c-format
msgid "%s: option requires an argument -- %c\n"
msgstr "%s: la opción -- %c requiere un argumento\n"
#: src/getopt.c:862
#: lib/getopt.c:862
#, fuzzy, c-format
msgid "%s: option `-W %s' is ambiguous\n"
msgstr "%s: la opción `%s' es ambigua\n"
# Pongo esto como en otros .po. sv
#: src/getopt.c:880
#: lib/getopt.c:880
#, fuzzy, c-format
msgid "%s: option `-W %s' doesn't allow an argument\n"
msgstr "%s: la opción `--%s' no admite ningún argumento\n"
# Duda: desconozco en qué caso se emplea esto. Estúdialo bien y
# comprueba que realmente es necesario emplear una palabra no
# española. Recuerda que el acuerdo que existe en la lista de correo en
# español es, en el peor de los casos, poner algo en español y luego en
# inglés a modo de recordatorio. Por ejemplo: "tubería (pipe)" - cll
#
# miré el código, lo que indica es el número de gotos del código
# ngp
#
#~ msgid "gotos"
#~ msgstr "saltos (gotos)"
# Duda: desconozco cuál será el convenio en la lista de correo a
# propósito de "fatal". Por favor, comprueba que "error grave" es
# preferido por todos los miembros a "error fatal" - cll
# veremos que dice la mayoría, como hay otros 2 revisores
# La verdad es que a mi lo de error fatal me suena fatal
# ngp
#
#, fuzzy
#~ msgid "fatal error: "
#~ msgstr "error grave: %s\n"
# ¿Por qué no lo pones en mayúsculas? Al fin y al cabo, eso es lo que
# haces luego con "FDERIVES" que traduces como "FDERIVACIONES", ... -
# cll

214
po/fr.po
View File

@@ -5,7 +5,7 @@
msgid ""
msgstr ""
"Project-Id-Version: bison 1.25\n"
"POT-Creation-Date: 2000-03-28 14:20+0200\n"
"POT-Creation-Date: 2000-03-31 15:40+0200\n"
"PO-Revision-Date: 1996-03-19 20:05 EST\n"
"Last-Translator: Dominique Boucher <boucherd@IRO.UMontreal.CA>\n"
"Language-Team: French <fr@li.org>\n"
@@ -13,6 +13,11 @@ msgstr ""
"Content-Type: text/plain; charset=ISO-8859-1\n"
"Content-Transfer-Encoding: 8-bit\n"
#: src/LR0.c:377
#, c-format
msgid "too many states (max %d)"
msgstr ""
#: src/allocate.c:59 src/allocate.c:75
#, c-format
msgid "%s: memory exhausted\n"
@@ -176,74 +181,66 @@ msgstr ""
msgid "Report bugs to <bug-bison@gnu.org>.\n"
msgstr ""
#: src/getargs.c:196
#: src/getargs.c:195
#, c-format
msgid "%s: no grammar file given\n"
msgstr "%s: grammaire manquante\n"
#: src/getargs.c:200
#: src/getargs.c:199
#, fuzzy, c-format
msgid "%s: extra arguments ignored after `%s'\n"
msgstr "%s: paramètres supplémentaires ignorés après «%s»\n"
#: src/lalr.c:294
msgid "gotos"
msgstr "gotos"
#: src/lalr.c:293
#, c-format
msgid "too many gotos (max %d)"
msgstr ""
#: src/lex.c:119
#: src/lex.c:115
msgid "unexpected `/' found and ignored"
msgstr "`/' inattendu et ignoré"
#: src/lex.c:148 src/reader.c:258
#: src/lex.c:144 src/reader.c:248
msgid "unterminated comment"
msgstr "le commentaire ne se termine pas"
#: src/lex.c:176
msgid "Unexpected end of file"
#: src/lex.c:172
#, fuzzy
msgid "unexpected end of file"
msgstr "Fin de fichier inattendue"
#: src/lex.c:197
#: src/lex.c:193
msgid "unescaped newline in constant"
msgstr "retour de chariot sans échappement dans une constante"
#: src/lex.c:229
#: src/lex.c:225
#, c-format
msgid "octal value outside range 0...255: `\\%o'"
msgstr "valeur octale à l'extérieur de l'intervalle 0...255: \\%o"
#: src/lex.c:253
#: src/lex.c:250
#, c-format
msgid "hexadecimal value above 255: `\\x%x'"
msgstr "valeur hexadécimale supérieure à 255: \\x%x"
#: src/lex.c:263
#: src/lex.c:261
#, c-format
msgid "unknown escape sequence: `\\' followed by `%s'"
msgstr "séquence d'échappement inconnue: `\\' suivie de `%s'"
#: src/lex.c:396
#: src/lex.c:394
msgid "use \"...\" for multi-character literal tokens"
msgstr "utilisez \"...\" pour les terminaux litéraux de plusieurs caractères"
#: src/lex.c:475
#: src/lex.c:473
msgid "unterminated type name at end of file"
msgstr "le nom de type ne se termine pas avant la fin de fichier"
#: src/lex.c:478
#: src/lex.c:476
msgid "unterminated type name"
msgstr "le nom de type ne se termine pas"
#: src/main.c:163
#, fuzzy
msgid "fatal error: "
msgstr "erreur fatale: %s\n"
#: src/main.c:258
#, c-format
msgid "too many %s (max %d)"
msgstr ""
#: src/main.c:268
#: src/main.c:137
#, fuzzy, c-format
msgid "%s: internal error: %s\n"
msgstr "erreur interne, %s\n"
@@ -252,9 +249,9 @@ msgstr "erreur interne, %s\n"
msgid "Entering set_nullable"
msgstr "Entré dans set_nullable"
#: src/output.c:1201
#, c-format
msgid "maximum table size (%s) exceeded"
#: src/output.c:1199
#, fuzzy, c-format
msgid "maximum table size (%d) exceeded"
msgstr "taille maximum des tables (%s) dépassée"
#: src/print.c:85
@@ -356,234 +353,242 @@ msgstr "
msgid " on right:"
msgstr " à droite:"
#: src/reader.c:163
#: src/reader.c:154
msgid " Skipping to next \\n"
msgstr " Saut jusqu'au prochain \\n"
#: src/reader.c:165
#: src/reader.c:156
#, c-format
msgid " Skipping to next %c"
msgstr " Saut jusqu'au prochain %c"
#: src/reader.c:189 src/reader.c:204
#: src/reader.c:180 src/reader.c:195
msgid "unterminated string at end of file"
msgstr "chaîne de caractères non terminée en fin de fichier"
#: src/reader.c:192
#: src/reader.c:183
msgid "unterminated string"
msgstr "chaîne de caractère non terminée"
#: src/reader.c:434
#: src/reader.c:424
#, c-format
msgid "unrecognized: %s"
msgstr "non reconnu: %s"
#: src/reader.c:439
#: src/reader.c:429
msgid "no input grammar"
msgstr "aucune grammaire en entrée"
#: src/reader.c:442
#: src/reader.c:432
#, c-format
msgid "unknown character: %s"
msgstr "caractère inconnu: %s"
#: src/reader.c:493
#: src/reader.c:484
msgid "unterminated `%{' definition"
msgstr "La section de définition (%{) ne termine pas avant la fin du fichier"
#: src/reader.c:571 src/reader.c:792
#: src/reader.c:525 src/reader.c:713 src/reader.c:762
#, c-format
msgid "Premature EOF after %s"
msgstr ""
#: src/reader.c:562 src/reader.c:784
#, c-format
msgid "symbol %s redefined"
msgstr "symbole %s redéfini"
#: src/reader.c:581 src/reader.c:737 src/reader.c:799 src/reader.c:1703
#: src/reader.c:572 src/reader.c:728 src/reader.c:791 src/reader.c:1697
#, c-format
msgid "type redeclaration for %s"
msgstr "redéclaration du type de %s"
#: src/reader.c:591
#: src/reader.c:582
#, c-format
msgid "`%s' is invalid in %s"
msgstr "`%s' n'est pas valide dans %s"
#: src/reader.c:639
#: src/reader.c:630
#, c-format
msgid "unrecognized item %s, expected an identifier"
msgstr "item %s non reconnu, un identificateur est attendu"
#: src/reader.c:661
#: src/reader.c:652
#, c-format
msgid "expected string constant instead of %s"
msgstr "chaîne de caractères constante attendue plutôt que %s"
#: src/reader.c:683
#: src/reader.c:674
#, c-format
msgid "multiple %start declarations"
msgstr "multiples déclarations %start"
#: src/reader.c:685
#: src/reader.c:676
#, c-format
msgid "invalid %start declaration"
msgstr "la déclaration %start n'est pas valide"
#: src/reader.c:705
#: src/reader.c:696
msgid "%type declaration has no <typename>"
msgstr "la déclaration %type n'a pas de <nom_de_type>"
#: src/reader.c:742
msgid "invalid %%type declaration due to item: `%s'"
#: src/reader.c:733
#, fuzzy
msgid "invalid %%type declaration due to item: %s"
msgstr "la déclaration %%type n'est pas valide à cause de l'item: %s"
#: src/reader.c:788
#: src/reader.c:780
#, c-format
msgid "redefining precedence of %s"
msgstr "redéfinition du niveau de priorité de %s"
#: src/reader.c:811
#: src/reader.c:803
#, c-format
msgid "invalid text (%s) - number should be after identifier"
msgstr ""
"le texte n'est pas valide (%s) - le nombre devrait suivre l'identificateur"
#: src/reader.c:821
#: src/reader.c:813
#, c-format
msgid "unexpected item: %s"
msgstr "item inattendu: %s"
#: src/reader.c:845
#: src/reader.c:837
#, c-format
msgid "multiple %union declarations"
msgstr "multiples déclarations %union"
#: src/reader.c:903
#: src/reader.c:895
msgid "unterminated comment at end of file"
msgstr "le commentaire ne se termine pas avant la fin du fichier"
#: src/reader.c:929
#: src/reader.c:921
msgid "unmatched close-brace (`}')"
msgstr "accolade fermante `}' non appariée"
#: src/reader.c:973
#: src/reader.c:965
#, c-format
msgid "argument of %expect is not an integer"
msgstr "le paramètre de %expect n'est pas un entier"
#: src/reader.c:1005
#: src/reader.c:997
#, c-format
msgid "@%s is invalid"
msgstr "@%s n'est pas valide"
#: src/reader.c:1014
#: src/reader.c:1012 src/reader.c:1024
msgid "invalid $ value"
msgstr "la valeur de symbole $ n'est pas valide"
#: src/reader.c:1092
#: src/reader.c:1083
msgid "unmatched right brace (`}')"
msgstr "accolade fermante `}' non appariée"
#: src/reader.c:1139 src/reader.c:1277
#: src/reader.c:1130 src/reader.c:1270
#, c-format
msgid "$$ of `%s' has no declared type"
msgstr "$$ de `%s' n'a pas son type déclaré"
#: src/reader.c:1154 src/reader.c:1293
#, c-format
msgid "$%s of `%s' has no declared type"
#: src/reader.c:1146 src/reader.c:1286
#, fuzzy, c-format
msgid "$%d of `%s' has no declared type"
msgstr "$%s cd `%s' n'a pas son type déclaré"
#: src/reader.c:1159 src/reader.c:1298
#: src/reader.c:1151 src/reader.c:1291
#, c-format
msgid "$%s is invalid"
msgstr "$%s n'est pas valide"
#: src/reader.c:1167
msgid "unterminated %%guard clause"
#: src/reader.c:1160
#, fuzzy, c-format
msgid "unterminated %guard clause"
msgstr "clause %%guard non terminée"
#: src/reader.c:1307
#: src/reader.c:1300
msgid "unmatched `{'"
msgstr "accolade ouvrante `{' non appariée"
#: src/reader.c:1393
#: src/reader.c:1386
msgid "ill-formed rule: initial symbol not followed by colon"
msgstr "règle mal formée: le symbole initial n'est pas suivi de `:'"
#: src/reader.c:1400
#: src/reader.c:1393
msgid "grammar starts with vertical bar"
msgstr "la grammaire débute par une barre verticale"
#: src/reader.c:1431
#: src/reader.c:1424
#, c-format
msgid "rule given for %s, which is a token"
msgstr "la règle pour %s, qui est un terminal"
#: src/reader.c:1529
#: src/reader.c:1522
msgid "two @prec's in a row"
msgstr "deux @prec de suite"
#: src/reader.c:1537
msgid "%%guard present but %%semantic_parser not specified"
#: src/reader.c:1531
#, fuzzy, c-format
msgid "%guard present but %semantic_parser not specified"
msgstr "%%guard est présent mais %%semantic_parser n'est pas spécifié"
#: src/reader.c:1546
#: src/reader.c:1540
msgid "two actions at end of one rule"
msgstr "deux actions à la fin d'une même règle"
#: src/reader.c:1561
#: src/reader.c:1555
#, c-format
msgid "type clash (`%s' `%s') on default action"
msgstr "conflit de type (`%s' `%s') pour l'action par défaut"
#: src/reader.c:1567
#: src/reader.c:1561
msgid "empty rule for typed nonterminal, and no action"
msgstr "règle vide pour une catégorie typée et aucune action"
#: src/reader.c:1611
#: src/reader.c:1605
#, c-format
msgid "invalid input: %s"
msgstr "entrée non valide: %s"
#: src/reader.c:1619
#, c-format
msgid "too many symbols (tokens plus nonterminals); maximum %s"
#: src/reader.c:1613
#, fuzzy, c-format
msgid "too many symbols (tokens plus nonterminals); maximum %d"
msgstr "trop de symboles (terminaux et catégories); maximum de %s"
#: src/reader.c:1622
#: src/reader.c:1616
msgid "no rules in the input grammar"
msgstr "la grammaire n'a pas de règles"
#: src/reader.c:1640
#: src/reader.c:1634
#, c-format
msgid "symbol %s is used, but is not defined as a token and has no rules"
msgstr ""
"le symbole %s est utilisé mais ce n'est pas un terminal et il ne possède pas "
"de règle"
#: src/reader.c:1679
#: src/reader.c:1673
msgid "ill-formed %type declaration"
msgstr "déclaration %type mal formée"
#: src/reader.c:1758
#: src/reader.c:1752
#, c-format
msgid "conflicting precedences for %s and %s"
msgstr "les priorités pour %s et %s entrent en conflit"
#: src/reader.c:1770
#: src/reader.c:1764
#, c-format
msgid "conflicting assoc values for %s and %s"
msgstr "les valeurs d'association de %s et %s entrent en conflit"
#: src/reader.c:1821
#, c-format
msgid "tokens %s and %s both assigned number %s"
#: src/reader.c:1815
#, fuzzy, c-format
msgid "tokens %s and %s both assigned number %d"
msgstr "les terminaux %s et %s se sont vus assigner le nombre %s"
#: src/reader.c:1835
#: src/reader.c:1829
#, c-format
msgid "the start symbol %s is undefined"
msgstr "le symbole de départ %s n'est pas défini"
#: src/reader.c:1837
#: src/reader.c:1831
#, c-format
msgid "the start symbol %s is a token"
msgstr "le symbole de départ %s est un terminal"
@@ -691,65 +696,72 @@ msgstr " et "
msgid "%d useless rule%s"
msgstr "%d règle(s) non productive(s)"
#: src/getopt.c:675
#: lib/getopt.c:675
#, c-format
msgid "%s: option `%s' is ambiguous\n"
msgstr "%s: l'option %s est ambigüe\n"
#: src/getopt.c:700
#: lib/getopt.c:700
#, c-format
msgid "%s: option `--%s' doesn't allow an argument\n"
msgstr "%s: l'option --%s n'admet pas de paramètre\n"
#: src/getopt.c:705
#: lib/getopt.c:705
#, c-format
msgid "%s: option `%c%s' doesn't allow an argument\n"
msgstr "%s: l'option %c%s n'admet pas de paramètre\n"
#: src/getopt.c:723 src/getopt.c:896
#: lib/getopt.c:723 lib/getopt.c:896
#, c-format
msgid "%s: option `%s' requires an argument\n"
msgstr "%s: l'option %s requiert un paramètre\n"
#. --option
#: src/getopt.c:752
#: lib/getopt.c:752
#, c-format
msgid "%s: unrecognized option `--%s'\n"
msgstr "%s: l'option --%s est inconnue\n"
#. +option or -option
#: src/getopt.c:756
#: lib/getopt.c:756
#, c-format
msgid "%s: unrecognized option `%c%s'\n"
msgstr "%s: l'option %c%s est inconnue\n"
#. 1003.2 specifies the format of this message.
#: src/getopt.c:782
#: lib/getopt.c:782
#, c-format
msgid "%s: illegal option -- %c\n"
msgstr "%s: option illégale -- %c\n"
#: src/getopt.c:785
#: lib/getopt.c:785
#, c-format
msgid "%s: invalid option -- %c\n"
msgstr "%s: option non valide -- %c\n"
#. 1003.2 specifies the format of this message.
#: src/getopt.c:815 src/getopt.c:945
#: lib/getopt.c:815 lib/getopt.c:945
#, c-format
msgid "%s: option requires an argument -- %c\n"
msgstr "%s: Cette option requiert un paramètre -- %c\n"
#: src/getopt.c:862
#: lib/getopt.c:862
#, fuzzy, c-format
msgid "%s: option `-W %s' is ambiguous\n"
msgstr "%s: l'option %s est ambigüe\n"
#: src/getopt.c:880
#: lib/getopt.c:880
#, fuzzy, c-format
msgid "%s: option `-W %s' doesn't allow an argument\n"
msgstr "%s: l'option --%s n'admet pas de paramètre\n"
#~ msgid "gotos"
#~ msgstr "gotos"
#, fuzzy
#~ msgid "fatal error: "
#~ msgstr "erreur fatale: %s\n"
#~ msgid ""
#~ "\n"
#~ "\n"

212
po/nl.po
View File

@@ -5,7 +5,7 @@
msgid ""
msgstr ""
"Project-Id-Version: bison 1.25\n"
"POT-Creation-Date: 2000-03-28 14:20+0200\n"
"POT-Creation-Date: 2000-03-31 15:40+0200\n"
"PO-Revision-Date: 1996-08-27 15:34 MET DST\n"
"Last-Translator: Erick Branderhorst <branderh@debian.org>\n"
"Language-Team: Dutch <nl@li.org>\n"
@@ -13,6 +13,11 @@ msgstr ""
"Content-Type: text/plain; charset=ISO-8859-1\n"
"Content-Transfer-Encoding: 8-bit\n"
#: src/LR0.c:377
#, c-format
msgid "too many states (max %d)"
msgstr ""
#: src/allocate.c:59 src/allocate.c:75
#, c-format
msgid "%s: memory exhausted\n"
@@ -175,74 +180,66 @@ msgstr ""
msgid "Report bugs to <bug-bison@gnu.org>.\n"
msgstr ""
#: src/getargs.c:196
#: src/getargs.c:195
#, c-format
msgid "%s: no grammar file given\n"
msgstr "%s: geen grammatica bestand gegeven\n"
#: src/getargs.c:200
#: src/getargs.c:199
#, fuzzy, c-format
msgid "%s: extra arguments ignored after `%s'\n"
msgstr "%s: extra argumenten genegeerd na '%s'\n"
#: src/lalr.c:294
msgid "gotos"
msgstr "ganaar"
#: src/lalr.c:293
#, c-format
msgid "too many gotos (max %d)"
msgstr ""
#: src/lex.c:119
#: src/lex.c:115
msgid "unexpected `/' found and ignored"
msgstr "onverwachte `/' gevonden en genegeerd"
#: src/lex.c:148 src/reader.c:258
#: src/lex.c:144 src/reader.c:248
msgid "unterminated comment"
msgstr "ongetermineerd commentaar"
#: src/lex.c:176
msgid "Unexpected end of file"
#: src/lex.c:172
#, fuzzy
msgid "unexpected end of file"
msgstr "Onverwacht bestandseinde"
#: src/lex.c:197
#: src/lex.c:193
msgid "unescaped newline in constant"
msgstr "niet geescapete nieuwe regel in constante"
#: src/lex.c:229
#: src/lex.c:225
#, c-format
msgid "octal value outside range 0...255: `\\%o'"
msgstr "octale waarde buiten domein 0...255: `\\%o'"
#: src/lex.c:253
#: src/lex.c:250
#, c-format
msgid "hexadecimal value above 255: `\\x%x'"
msgstr "hexadecimale waarde boven 255: `\\x%x'"
#: src/lex.c:263
#: src/lex.c:261
#, c-format
msgid "unknown escape sequence: `\\' followed by `%s'"
msgstr "onbekende escape reeks: `\\' gevolgd door `%s'"
#: src/lex.c:396
#: src/lex.c:394
msgid "use \"...\" for multi-character literal tokens"
msgstr "gebruik \"...\" voor meerdere karakters literal tekens"
#: src/lex.c:475
#: src/lex.c:473
msgid "unterminated type name at end of file"
msgstr "niet getermineerd type naam aan het einde van bestand"
#: src/lex.c:478
#: src/lex.c:476
msgid "unterminated type name"
msgstr "niet getermineerd type naam"
#: src/main.c:163
#, fuzzy
msgid "fatal error: "
msgstr "fatale fout: %s\n"
#: src/main.c:258
#, c-format
msgid "too many %s (max %d)"
msgstr ""
#: src/main.c:268
#: src/main.c:137
#, fuzzy, c-format
msgid "%s: internal error: %s\n"
msgstr "interne fout, %s\n"
@@ -251,9 +248,9 @@ msgstr "interne fout, %s\n"
msgid "Entering set_nullable"
msgstr "Inkomende set nullable"
#: src/output.c:1201
#, c-format
msgid "maximum table size (%s) exceeded"
#: src/output.c:1199
#, fuzzy, c-format
msgid "maximum table size (%d) exceeded"
msgstr "maximale tabel grootte (%s) overschreden"
#: src/print.c:85
@@ -355,234 +352,242 @@ msgstr " links:"
msgid " on right:"
msgstr " rechts:"
#: src/reader.c:163
#: src/reader.c:154
msgid " Skipping to next \\n"
msgstr " Verder naar volgende \\n"
#: src/reader.c:165
#: src/reader.c:156
#, c-format
msgid " Skipping to next %c"
msgstr " Verder naar volgende %c"
#: src/reader.c:189 src/reader.c:204
#: src/reader.c:180 src/reader.c:195
msgid "unterminated string at end of file"
msgstr "niet getermineerde string aan einde van bestand"
#: src/reader.c:192
#: src/reader.c:183
msgid "unterminated string"
msgstr "niet getermineerde string"
#: src/reader.c:434
#: src/reader.c:424
#, c-format
msgid "unrecognized: %s"
msgstr "onbekend: %s"
#: src/reader.c:439
#: src/reader.c:429
msgid "no input grammar"
msgstr "geen invoer grammatica"
#: src/reader.c:442
#: src/reader.c:432
#, c-format
msgid "unknown character: %s"
msgstr "onbekend karakter: %s"
#: src/reader.c:493
#: src/reader.c:484
msgid "unterminated `%{' definition"
msgstr "niet getermineerde `%{' definitie"
#: src/reader.c:571 src/reader.c:792
#: src/reader.c:525 src/reader.c:713 src/reader.c:762
#, c-format
msgid "Premature EOF after %s"
msgstr ""
#: src/reader.c:562 src/reader.c:784
#, c-format
msgid "symbol %s redefined"
msgstr "symbool %s opnieuw gedefinieerd"
#: src/reader.c:581 src/reader.c:737 src/reader.c:799 src/reader.c:1703
#: src/reader.c:572 src/reader.c:728 src/reader.c:791 src/reader.c:1697
#, c-format
msgid "type redeclaration for %s"
msgstr "type herdeclaratie voor %s"
#: src/reader.c:591
#: src/reader.c:582
#, c-format
msgid "`%s' is invalid in %s"
msgstr "`%s' is onjuist in %s"
#: src/reader.c:639
#: src/reader.c:630
#, c-format
msgid "unrecognized item %s, expected an identifier"
msgstr "onbekend item %s, verwacht een identifier"
#: src/reader.c:661
#: src/reader.c:652
#, c-format
msgid "expected string constant instead of %s"
msgstr "verwacht string constante in plaats van %s"
#: src/reader.c:683
#: src/reader.c:674
#, c-format
msgid "multiple %start declarations"
msgstr "meerdere %start declaraties"
#: src/reader.c:685
#: src/reader.c:676
#, c-format
msgid "invalid %start declaration"
msgstr "onjuiste %start declaratie"
#: src/reader.c:705
#: src/reader.c:696
msgid "%type declaration has no <typename>"
msgstr "%type declaratie heeft geen <typenaam>"
#: src/reader.c:742
msgid "invalid %%type declaration due to item: `%s'"
#: src/reader.c:733
#, fuzzy
msgid "invalid %%type declaration due to item: %s"
msgstr "onjuist %%type declaratie door item: `%s'"
#: src/reader.c:788
#: src/reader.c:780
#, c-format
msgid "redefining precedence of %s"
msgstr "herdefinieren voorganger van %s"
#: src/reader.c:811
#: src/reader.c:803
#, c-format
msgid "invalid text (%s) - number should be after identifier"
msgstr "onjuiste tekst (%s) - nummer hoort na de identifier"
#: src/reader.c:821
#: src/reader.c:813
#, c-format
msgid "unexpected item: %s"
msgstr "onbekend item: %s"
#: src/reader.c:845
#: src/reader.c:837
#, c-format
msgid "multiple %union declarations"
msgstr "meerdere %union declaraties"
#: src/reader.c:903
#: src/reader.c:895
msgid "unterminated comment at end of file"
msgstr "niet getermineerd commentaar aan einde van bestand"
#: src/reader.c:929
#: src/reader.c:921
msgid "unmatched close-brace (`}')"
msgstr "niet overeenkomstige afsluit-haakje (`}')"
#: src/reader.c:973
#: src/reader.c:965
#, c-format
msgid "argument of %expect is not an integer"
msgstr "argument van %expect is niet een integer"
#: src/reader.c:1005
#: src/reader.c:997
#, c-format
msgid "@%s is invalid"
msgstr "@%s is onjuist"
#: src/reader.c:1014
#: src/reader.c:1012 src/reader.c:1024
msgid "invalid $ value"
msgstr "onjuiste $ waarde"
#: src/reader.c:1092
#: src/reader.c:1083
msgid "unmatched right brace (`}')"
msgstr "niet overeenkomstig rechter haakje (`}')"
#: src/reader.c:1139 src/reader.c:1277
#: src/reader.c:1130 src/reader.c:1270
#, c-format
msgid "$$ of `%s' has no declared type"
msgstr "$$ van `%s' heeft geen gedeclareerd type"
#: src/reader.c:1154 src/reader.c:1293
#, c-format
msgid "$%s of `%s' has no declared type"
#: src/reader.c:1146 src/reader.c:1286
#, fuzzy, c-format
msgid "$%d of `%s' has no declared type"
msgstr "$%s van `%s' heeft geen gedeclareerd type"
#: src/reader.c:1159 src/reader.c:1298
#: src/reader.c:1151 src/reader.c:1291
#, c-format
msgid "$%s is invalid"
msgstr "$%s is onjuist"
#: src/reader.c:1167
msgid "unterminated %%guard clause"
#: src/reader.c:1160
#, fuzzy, c-format
msgid "unterminated %guard clause"
msgstr "niet getermineerde %%guard voorwaarde"
#: src/reader.c:1307
#: src/reader.c:1300
msgid "unmatched `{'"
msgstr "niet overeenkomstige `{'"
#: src/reader.c:1393
#: src/reader.c:1386
msgid "ill-formed rule: initial symbol not followed by colon"
msgstr ""
"slecht geformuleerde regel: initieel symbool niet gevolgd door dubbele punt"
#: src/reader.c:1400
#: src/reader.c:1393
msgid "grammar starts with vertical bar"
msgstr "grammatica start met een verticale bar"
#: src/reader.c:1431
#: src/reader.c:1424
#, c-format
msgid "rule given for %s, which is a token"
msgstr "regel geven voor %s, welke een teken is"
#: src/reader.c:1529
#: src/reader.c:1522
msgid "two @prec's in a row"
msgstr "twee @prec's in een regel"
#: src/reader.c:1537
msgid "%%guard present but %%semantic_parser not specified"
#: src/reader.c:1531
#, fuzzy, c-format
msgid "%guard present but %semantic_parser not specified"
msgstr "%%guard aanwezig maar %%semantic_parser niet gespecificeerd"
#: src/reader.c:1546
#: src/reader.c:1540
msgid "two actions at end of one rule"
msgstr "twee akties aan het einde van een regel"
#: src/reader.c:1561
#: src/reader.c:1555
#, c-format
msgid "type clash (`%s' `%s') on default action"
msgstr "type clash (`%s' `%s') bij standaard aktie"
#: src/reader.c:1567
#: src/reader.c:1561
msgid "empty rule for typed nonterminal, and no action"
msgstr "lege regel voor getypte niet terminal, en geen aktie"
#: src/reader.c:1611
#: src/reader.c:1605
#, c-format
msgid "invalid input: %s"
msgstr "ongeldige invoer: %s"
#: src/reader.c:1619
#, c-format
msgid "too many symbols (tokens plus nonterminals); maximum %s"
#: src/reader.c:1613
#, fuzzy, c-format
msgid "too many symbols (tokens plus nonterminals); maximum %d"
msgstr "te veel symbolen (tekens plus nietterminals); maximum %s"
#: src/reader.c:1622
#: src/reader.c:1616
msgid "no rules in the input grammar"
msgstr "geen regels voor invoer grammatica"
#: src/reader.c:1640
#: src/reader.c:1634
#, c-format
msgid "symbol %s is used, but is not defined as a token and has no rules"
msgstr ""
"symbool %s is gebruikt, maar is niet gedefinieerd als een teken en\n"
"heeft geen regels"
#: src/reader.c:1679
#: src/reader.c:1673
msgid "ill-formed %type declaration"
msgstr "slecht geformuleerde %type declaratie"
#: src/reader.c:1758
#: src/reader.c:1752
#, c-format
msgid "conflicting precedences for %s and %s"
msgstr "conflictuerende precedentein voor %s en %s"
#: src/reader.c:1770
#: src/reader.c:1764
#, c-format
msgid "conflicting assoc values for %s and %s"
msgstr "conflictuerende associatieve waarden voor %s en %s"
#: src/reader.c:1821
#: src/reader.c:1815
#, c-format
msgid "tokens %s and %s both assigned number %s"
msgid "tokens %s and %s both assigned number %d"
msgstr ""
#: src/reader.c:1835
#: src/reader.c:1829
#, c-format
msgid "the start symbol %s is undefined"
msgstr ""
#: src/reader.c:1837
#: src/reader.c:1831
#, c-format
msgid "the start symbol %s is a token"
msgstr "het start symbool %s is een token"
@@ -690,65 +695,72 @@ msgstr " en "
msgid "%d useless rule%s"
msgstr "%d onbruikbare regels%s"
#: src/getopt.c:675
#: lib/getopt.c:675
#, c-format
msgid "%s: option `%s' is ambiguous\n"
msgstr "%s: optie `%s' is niet eenduidig\n"
#: src/getopt.c:700
#: lib/getopt.c:700
#, c-format
msgid "%s: option `--%s' doesn't allow an argument\n"
msgstr "%s: optie `--%s' staat geen argument toe\n"
#: src/getopt.c:705
#: lib/getopt.c:705
#, c-format
msgid "%s: option `%c%s' doesn't allow an argument\n"
msgstr "%s: optie `%c%s' staat geen argument toe\n"
#: src/getopt.c:723 src/getopt.c:896
#: lib/getopt.c:723 lib/getopt.c:896
#, c-format
msgid "%s: option `%s' requires an argument\n"
msgstr "%s: optie `%s' vereist een argument\n"
#. --option
#: src/getopt.c:752
#: lib/getopt.c:752
#, c-format
msgid "%s: unrecognized option `--%s'\n"
msgstr "%s: onbekende optie `--%s'\n"
#. +option or -option
#: src/getopt.c:756
#: lib/getopt.c:756
#, c-format
msgid "%s: unrecognized option `%c%s'\n"
msgstr "%s: onbekende optie `%c%s'\n"
#. 1003.2 specifies the format of this message.
#: src/getopt.c:782
#: lib/getopt.c:782
#, c-format
msgid "%s: illegal option -- %c\n"
msgstr "%s: ongeldige optie -- %c\n"
#: src/getopt.c:785
#: lib/getopt.c:785
#, c-format
msgid "%s: invalid option -- %c\n"
msgstr "%s: onjuiste optie -- %c\n"
#. 1003.2 specifies the format of this message.
#: src/getopt.c:815 src/getopt.c:945
#: lib/getopt.c:815 lib/getopt.c:945
#, c-format
msgid "%s: option requires an argument -- %c\n"
msgstr "%s: optie vereist een argument -- %c\n"
#: src/getopt.c:862
#: lib/getopt.c:862
#, fuzzy, c-format
msgid "%s: option `-W %s' is ambiguous\n"
msgstr "%s: optie `%s' is niet eenduidig\n"
#: src/getopt.c:880
#: lib/getopt.c:880
#, fuzzy, c-format
msgid "%s: option `-W %s' doesn't allow an argument\n"
msgstr "%s: optie `--%s' staat geen argument toe\n"
#~ msgid "gotos"
#~ msgstr "ganaar"
#, fuzzy
#~ msgid "fatal error: "
#~ msgstr "fatale fout: %s\n"
#~ msgid ""
#~ "\n"
#~ "\n"

214
po/ru.po
View File

@@ -5,7 +5,7 @@
msgid ""
msgstr ""
"Project-Id-Version: bison 1.25\n"
"POT-Creation-Date: 2000-03-28 14:20+0200\n"
"POT-Creation-Date: 2000-03-31 15:40+0200\n"
"PO-Revision-Date: 1999-07-12 12:18\n"
"Last-Translator: Dmitry S. Sivachenko <dima@Chg.RU>\n"
"Language-Team: Russian <ru@li.org>\n"
@@ -13,6 +13,11 @@ msgstr ""
"Content-Type: text/plain; charset=koi8-r\n"
"Content-Transfer-Encoding: 8-bit\n"
#: src/LR0.c:377
#, c-format
msgid "too many states (max %d)"
msgstr ""
#: src/allocate.c:59 src/allocate.c:75
#, c-format
msgid "%s: memory exhausted\n"
@@ -171,74 +176,66 @@ msgstr ""
msgid "Report bugs to <bug-bison@gnu.org>.\n"
msgstr ""
#: src/getargs.c:196
#: src/getargs.c:195
#, c-format
msgid "%s: no grammar file given\n"
msgstr "%s: ÎÅ ÚÁÄÁÎ ÆÁÊÌ Ó ÇÒÁÍÍÁÔÉËÏÊ\n"
#: src/getargs.c:200
#: src/getargs.c:199
#, fuzzy, c-format
msgid "%s: extra arguments ignored after `%s'\n"
msgstr "%s: ÌÉÛÎÉÅ ÁÒÇÕÍÅÎÔÙ ÐÏÓÌÅ '%s' ÉÇÎÏÒÉÒÏ×ÁÎÙ\n"
#: src/lalr.c:294
msgid "gotos"
msgstr "ÂÅÚÕÓÌÏ×ÎÙÈ ÐÅÒÅÈÏÄÏ×"
#: src/lalr.c:293
#, c-format
msgid "too many gotos (max %d)"
msgstr ""
#: src/lex.c:119
#: src/lex.c:115
msgid "unexpected `/' found and ignored"
msgstr "×ÓÔÒÅÞÅÎ É ÐÒÏÉÇÎÏÒÉÒÏ×ÁÎ ÎÅÏÖÉÄÁÎÎÙÊ ÓÉÍ×ÏÌ `/'"
#: src/lex.c:148 src/reader.c:258
#: src/lex.c:144 src/reader.c:248
msgid "unterminated comment"
msgstr "ÎÅÚÁËÏÎÞÅÎÎÙÊ ËÏÍÍÅÎÔÁÒÉÊ"
#: src/lex.c:176
msgid "Unexpected end of file"
#: src/lex.c:172
#, fuzzy
msgid "unexpected end of file"
msgstr "îÅÏÖÉÄÁÎÎÙÊ ËÏÎÅà ÆÁÊÌÁ"
#: src/lex.c:197
#: src/lex.c:193
msgid "unescaped newline in constant"
msgstr "ÎÅÜËÒÁÎÉÒÏ×ÁÎÎÙÊ ÐÅÒÅ×ÏÄ ÓÔÒÏËÉ × ËÏÎÓÔÁÎÔÅ"
#: src/lex.c:229
#: src/lex.c:225
#, c-format
msgid "octal value outside range 0...255: `\\%o'"
msgstr "×ÏÓØÍÅÒÉÞÎÁÑ ×ÅÌÉÞÉÎÁ ÚÁ ÐÒÅÄÅÌÁÍÉ ÄÉÁÐÁÚÏÎÁ 0...255: `\\%o'"
#: src/lex.c:253
#: src/lex.c:250
#, c-format
msgid "hexadecimal value above 255: `\\x%x'"
msgstr "ÛÅÓÔÎÁÄÃÁÔÅÒÉÞÎÁÑ ×ÅÌÉÞÉÎÁ ÐÒÅ×ÙÛÁÅÔ 255: `\\x%x'"
#: src/lex.c:263
#: src/lex.c:261
#, c-format
msgid "unknown escape sequence: `\\' followed by `%s'"
msgstr "ÎÅÉÚ×ÅÓÔÎÁÑ escape-ÐÏÓÌÅÄÏ×ÁÔÅÌØÎÏÓÔØ: `%s' ÐÏÓÌÅ `\\'"
#: src/lex.c:396
#: src/lex.c:394
msgid "use \"...\" for multi-character literal tokens"
msgstr "ÉÓÐÏÌØÚÕÊÔÅ \"...\" ÄÌÑ ÍÎÏÇÏÓÉÍ×ÏÌØÎÙÈ ÌÉÔÅÒÁÌØÎÙÈ ÌÅËÓÅÍ"
#: src/lex.c:475
#: src/lex.c:473
msgid "unterminated type name at end of file"
msgstr "ÎÅÚÁËÏÎÞÅÎÎÏÅ ÉÍÑ ÔÉÐÁ × ËÏÎÃÅ ÆÁÊÌÁ"
#: src/lex.c:478
#: src/lex.c:476
msgid "unterminated type name"
msgstr "ÎÅÚÁËÏÎÞÅÎÎÏÅ ÉÍÑ ÔÉÐÁ"
#: src/main.c:163
#, fuzzy
msgid "fatal error: "
msgstr "ÆÁÔÁÌØÎÁÑ ÏÛÉÂËÁ: %s\n"
#: src/main.c:258
#, c-format
msgid "too many %s (max %d)"
msgstr ""
#: src/main.c:268
#: src/main.c:137
#, fuzzy, c-format
msgid "%s: internal error: %s\n"
msgstr "×ÎÕÔÒÅÎÎÑÑ ÏÛÉÂËÁ, %s\n"
@@ -247,9 +244,9 @@ msgstr "
msgid "Entering set_nullable"
msgstr "÷ÈÏÄ × set_nullable"
#: src/output.c:1201
#, c-format
msgid "maximum table size (%s) exceeded"
#: src/output.c:1199
#, fuzzy, c-format
msgid "maximum table size (%d) exceeded"
msgstr "ÐÒÅ×ÙÛÅÎ ÍÁËÓÉÍÁÌØÎÙÊ ÒÁÚÍÅÒ ÔÁÂÌÉÃÙ (%s)"
#: src/print.c:85
@@ -351,232 +348,240 @@ msgstr "
msgid " on right:"
msgstr " ÎÁÐÒÁ×Ï:"
#: src/reader.c:163
#: src/reader.c:154
msgid " Skipping to next \\n"
msgstr " ðÒÏÐÕÓË ÄÏ ÓÌÅÄÕÀÝÅÇÏ \\n"
#: src/reader.c:165
#: src/reader.c:156
#, c-format
msgid " Skipping to next %c"
msgstr " ðÒÏÐÕÓË ÄÏ ÓÌÅÄÕÀÝÅÇÏ %c"
#: src/reader.c:189 src/reader.c:204
#: src/reader.c:180 src/reader.c:195
msgid "unterminated string at end of file"
msgstr "ÎÅÚÁËÏÎÞÅÎÎÁÑ ÓÔÒÏËÁ × ËÏÎÃÅ ÆÁÊÌÁ"
#: src/reader.c:192
#: src/reader.c:183
msgid "unterminated string"
msgstr "ÎÅÚÁËÏÎÞÅÎÎÁÑ ÓÔÒÏËÁ"
#: src/reader.c:434
#: src/reader.c:424
#, c-format
msgid "unrecognized: %s"
msgstr "ÎÅÒÁÓÐÏÚÎÁÎÏ: %s"
#: src/reader.c:439
#: src/reader.c:429
msgid "no input grammar"
msgstr "ÎÅÔ ×ÈÏÄÎÏÊ ÇÒÁÍÍÁÔÉËÉ"
#: src/reader.c:442
#: src/reader.c:432
#, c-format
msgid "unknown character: %s"
msgstr "ÎÅÉÚ×ÅÓÔÎÙÊ ÓÉÍ×ÏÌ: %s"
#: src/reader.c:493
#: src/reader.c:484
msgid "unterminated `%{' definition"
msgstr "ÎÅÚÁËÏÎÞÅÎÎÏÅ ÏÐÒÅÄÅÌÅÎÉÅ `%{'"
#: src/reader.c:571 src/reader.c:792
#: src/reader.c:525 src/reader.c:713 src/reader.c:762
#, c-format
msgid "Premature EOF after %s"
msgstr ""
#: src/reader.c:562 src/reader.c:784
#, c-format
msgid "symbol %s redefined"
msgstr "ÐÏ×ÔÏÒÎÏÅ ÏÐÒÅÄÅÌÅÎÉÅ ÓÉÍ×ÏÌÁ %s"
#: src/reader.c:581 src/reader.c:737 src/reader.c:799 src/reader.c:1703
#: src/reader.c:572 src/reader.c:728 src/reader.c:791 src/reader.c:1697
#, c-format
msgid "type redeclaration for %s"
msgstr "ÐÏ×ÔÏÒÎÏÅ ÏÐÉÓÁÎÉÅ ÔÉÐÁ ÄÌÑ %s"
#: src/reader.c:591
#: src/reader.c:582
#, c-format
msgid "`%s' is invalid in %s"
msgstr "`%s' ÎÅ×ÅÒÎÏ × %s"
#: src/reader.c:639
#: src/reader.c:630
#, c-format
msgid "unrecognized item %s, expected an identifier"
msgstr "ÎÅÒÁÓÐÏÚÎÁÎÎÙÊ ÜÌÅÍÅÎÔ %s, ÏÖÉÄÁÌÓÑ ÉÄÅÎÔÉÆÉËÁÔÏÒ"
#: src/reader.c:661
#: src/reader.c:652
#, c-format
msgid "expected string constant instead of %s"
msgstr "×ÍÅÓÔÏ %s ÏÖÉÄÁÌÁÓØ ÓÔÒÏËÏ×ÁÑ ÐÏÓÔÏÑÎÎÁÑ"
#: src/reader.c:683
#: src/reader.c:674
#, c-format
msgid "multiple %start declarations"
msgstr "ÍÎÏÖÅÓÔ×ÅÎÎÏÅ ÏÐÉÓÁÎÉÅ %start"
#: src/reader.c:685
#: src/reader.c:676
#, c-format
msgid "invalid %start declaration"
msgstr "ÎÅ×ÅÒÎÏÅ ÏÐÉÓÁÎÉÅ %start"
#: src/reader.c:705
#: src/reader.c:696
msgid "%type declaration has no <typename>"
msgstr "ÏÐÉÓÁÎÉÅ %type ÎÅ ÉÍÅÅÔ <ÉÍÑ_ÔÉÐÁ>"
#: src/reader.c:742
msgid "invalid %%type declaration due to item: `%s'"
#: src/reader.c:733
#, fuzzy
msgid "invalid %%type declaration due to item: %s"
msgstr "ÎÅ×ÅÒÎÏÅ ÏÐÉÓÁÎÉÅ %%type ÉÚ-ÚÁ ÜÌÅÍÅÎÔÁ: `%s'"
#: src/reader.c:788
#: src/reader.c:780
#, c-format
msgid "redefining precedence of %s"
msgstr "ÐÅÒÅÏÐÒÅÄÅÌÅÎÉÅ ÐÒÉÏÒÉÔÅÔÁ ÄÌÑ %s"
#: src/reader.c:811
#: src/reader.c:803
#, c-format
msgid "invalid text (%s) - number should be after identifier"
msgstr "ÎÅ×ÅÒÎÙÊ ÔÅËÓÔ (%s) - ÞÉÓÌÏ ÄÏÌÖÎÏ ÓÌÅÄÏ×ÁÔØ ÚÁ ÉÄÅÎÔÉÆÉËÁÔÏÒÏÍ"
#: src/reader.c:821
#: src/reader.c:813
#, c-format
msgid "unexpected item: %s"
msgstr "ÎÅÏÖÉÄÁÎÎÙÊ ÜÌÅÍÅÎÔ: %s"
#: src/reader.c:845
#: src/reader.c:837
#, c-format
msgid "multiple %union declarations"
msgstr "ÍÎÏÖÅÓÔ×ÅÎÎÏÅ ÏÐÉÓÁÎÉÅ %union"
#: src/reader.c:903
#: src/reader.c:895
msgid "unterminated comment at end of file"
msgstr "ÎÅÚÁËÏÎÞÅÎÎÙÊ ËÏÍÍÅÎÔÁÒÉÊ × ËÏÎÃÅ ÆÁÊÌÁ"
#: src/reader.c:929
#: src/reader.c:921
msgid "unmatched close-brace (`}')"
msgstr "ÎÅÐÁÒÎÁÑ ÚÁËÒÙ×ÁÀÝÁÑ ÆÉÇÕÒÎÁÑ ÓËÏÂËÁ (`}')"
#: src/reader.c:973
#: src/reader.c:965
#, c-format
msgid "argument of %expect is not an integer"
msgstr "ÁÒÇÕÍÅÎÔ %expect ÎÅ Ñ×ÌÑÅÔÓÑ ÃÅÌÙÍ ÞÉÓÌÏÍ"
#: src/reader.c:1005
#: src/reader.c:997
#, c-format
msgid "@%s is invalid"
msgstr "ÎÅ×ÅÒÎÙÊ ÚÎÁË @%s"
#: src/reader.c:1014
#: src/reader.c:1012 src/reader.c:1024
msgid "invalid $ value"
msgstr "ÎÅ×ÅÒÎÏÅ $ ÚÎÁÞÅÎÉÅ"
#: src/reader.c:1092
#: src/reader.c:1083
msgid "unmatched right brace (`}')"
msgstr "ÎÅÐÁÒÎÁÑ ÐÒÁ×ÁÑ ÆÉÇÕÒÎÁÑ ÓËÏÂËÁ (`}')"
#: src/reader.c:1139 src/reader.c:1277
#: src/reader.c:1130 src/reader.c:1270
#, c-format
msgid "$$ of `%s' has no declared type"
msgstr "$$ × `%s' ÎÅ ÉÍÅÅÔ ÏÐÉÓÁÎÎÏÇÏ ÔÉÐÁ"
#: src/reader.c:1154 src/reader.c:1293
#, c-format
msgid "$%s of `%s' has no declared type"
#: src/reader.c:1146 src/reader.c:1286
#, fuzzy, c-format
msgid "$%d of `%s' has no declared type"
msgstr "$%s × `%s' ÎÅ ÉÍÅÅÔ ÏÐÉÓÁÎÎÏÇÏ ÔÉÐÁ"
#: src/reader.c:1159 src/reader.c:1298
#: src/reader.c:1151 src/reader.c:1291
#, c-format
msgid "$%s is invalid"
msgstr "ÎÅ×ÅÒÎÙÊ ÚÎÁË $%s"
#: src/reader.c:1167
msgid "unterminated %%guard clause"
#: src/reader.c:1160
#, fuzzy, c-format
msgid "unterminated %guard clause"
msgstr "ÎÅÚÁËÏÎÞÅÎÎÙÊ ÏÐÅÒÁÔÏÒ %%guard"
#: src/reader.c:1307
#: src/reader.c:1300
msgid "unmatched `{'"
msgstr "ÎÅÐÁÒÎÁÑ `{'"
#: src/reader.c:1393
#: src/reader.c:1386
msgid "ill-formed rule: initial symbol not followed by colon"
msgstr "ÎÅ×ÅÒÎÏÅ ÐÒÁ×ÉÌÏ: Ä×ÏÅÔÏÞÉÅ ÎÅ ÓÌÅÄÕÅÔ ÚÁ ÎÁÞÁÌØÎÙÍ ÓÉÍ×ÏÌÏÍ"
#: src/reader.c:1400
#: src/reader.c:1393
msgid "grammar starts with vertical bar"
msgstr "ÇÒÁÍÍÁÔÉËÁ ÎÁÞÉÎÁÅÔÓÑ Ó ×ÅÒÔÉËÁÌØÎÏÊ ÞÅÒÔÙ"
#: src/reader.c:1431
#: src/reader.c:1424
#, c-format
msgid "rule given for %s, which is a token"
msgstr "ÐÒÁ×ÉÌÏ ÚÁÄÁÎÏ ÄÌÑ %s, ËÏÔÏÒÙÊ Ñ×ÌÑÅÔÓÑ ÌÅËÓÅÍÏÊ"
#: src/reader.c:1529
#: src/reader.c:1522
msgid "two @prec's in a row"
msgstr "Ä×Á @prec ÐÏÄÒÑÄ"
#: src/reader.c:1537
msgid "%%guard present but %%semantic_parser not specified"
#: src/reader.c:1531
#, fuzzy, c-format
msgid "%guard present but %semantic_parser not specified"
msgstr "%%guard ÐÒÉÓÕÔÓÔ×ÕÅÔ, Á %%semantic_parser ÎÅ ÚÁÄÁÎ"
#: src/reader.c:1546
#: src/reader.c:1540
msgid "two actions at end of one rule"
msgstr "Ä×Á ÄÅÊÓÔ×ÉÑ × ËÏÎÃÅ ÏÄÎÏÇÏ ÐÒÁ×ÉÌÁ"
#: src/reader.c:1561
#: src/reader.c:1555
#, c-format
msgid "type clash (`%s' `%s') on default action"
msgstr "ËÏÎÆÌÉËÔ ÔÉÐÏ× (`%s' `%s') ÎÁ ÄÅÊÓÔ×ÉÉ ÐÏ ÕÍÏÌÞÁÎÉÀ"
#: src/reader.c:1567
#: src/reader.c:1561
msgid "empty rule for typed nonterminal, and no action"
msgstr ""
"ÐÕÓÔÏÅ ÐÒÁ×ÉÌÏ ÄÌÑ ÔÉÐÉÚÉÒÏ×ÁÎÎÏÇÏ ÎÅÔÅÒÍÉÎÁÌØÎÏÇÏ ÓÉÍ×ÏÌÁ, É ÎÅÔ ÄÅÊÓÔ×ÉÑ"
#: src/reader.c:1611
#: src/reader.c:1605
#, c-format
msgid "invalid input: %s"
msgstr "ÎÅ×ÅÒÎÙÅ ×ÈÏÄÎÙÅ ÄÁÎÎÙÅ: %s"
#: src/reader.c:1619
#, c-format
msgid "too many symbols (tokens plus nonterminals); maximum %s"
#: src/reader.c:1613
#, fuzzy, c-format
msgid "too many symbols (tokens plus nonterminals); maximum %d"
msgstr "ÓÌÉÛËÏÍ ÍÎÏÇÏ ÓÉÍ×ÏÌÏ× (ÌÅËÓÅÍÙ ÐÌÀÓ ÎÅÔÅÒÍÉÎÁÌÙ); ÍÁËÓÉÍÁÌØÎÏ %s"
#: src/reader.c:1622
#: src/reader.c:1616
msgid "no rules in the input grammar"
msgstr "ÏÔÓÕÔÓÔ×ÕÀÔ ÐÒÁ×ÉÌÁ ×Ï ×ÈÏÄÎÏÊ ÇÒÁÍÍÁÔÉËÅ"
#: src/reader.c:1640
#: src/reader.c:1634
#, c-format
msgid "symbol %s is used, but is not defined as a token and has no rules"
msgstr "ÓÉÍ×ÏÌ %s ÉÓÐÏÌØÚÕÅÔÓÑ, ÎÏ ÎÅ ÏÐÒÅÄÅÌÅÎ ËÁË ÌÅËÓÅÍÁ É ÎÅ ÉÍÅÅÔ ÐÒÁ×ÉÌ"
#: src/reader.c:1679
#: src/reader.c:1673
msgid "ill-formed %type declaration"
msgstr "ÎÅ×ÅÒÎÏÅ ÏÐÉÓÁÎÉÅ %type"
#: src/reader.c:1758
#: src/reader.c:1752
#, c-format
msgid "conflicting precedences for %s and %s"
msgstr "ÐÒÏÔÉ×ÏÒÅÞÉ×ÙÅ ÐÒÉÏÒÉÔÅÔÙ ÄÌÑ %s É %s"
#: src/reader.c:1770
#: src/reader.c:1764
#, c-format
msgid "conflicting assoc values for %s and %s"
msgstr "ÐÒÏÔÉ×ÏÒÅÞÉ×ÙÅ ÚÎÁÞÅÎÉÑ ÁÓÓÏÃÉÁÔÉ×ÎÏÓÔÉ ÄÌÑ %s É %s"
#: src/reader.c:1821
#, c-format
msgid "tokens %s and %s both assigned number %s"
#: src/reader.c:1815
#, fuzzy, c-format
msgid "tokens %s and %s both assigned number %d"
msgstr "ÏÂÏÉÍ ÌÅËÓÅÍÁÍ %s É %s ÐÒÉÓ×ÏÅÎ ÎÏÍÅÒ %s"
#: src/reader.c:1835
#: src/reader.c:1829
#, c-format
msgid "the start symbol %s is undefined"
msgstr "ÎÁÞÁÌØÎÙÊ ÓÉÍ×ÏÌ %s ÎÅÏÐÒÅÄÅÌÅÎ"
#: src/reader.c:1837
#: src/reader.c:1831
#, c-format
msgid "the start symbol %s is a token"
msgstr "ÎÁÞÁÌØÎÙÊ ÓÉÍ×ÏÌ %s Ñ×ÌÑÅÔÓÑ ÌÅËÓÅÍÏÊ"
@@ -684,65 +689,72 @@ msgstr "
msgid "%d useless rule%s"
msgstr "%d ÂÅÓÐÏÌÅÚÎÙÈ ÐÒÁ×ÉÌ%s"
#: src/getopt.c:675
#: lib/getopt.c:675
#, c-format
msgid "%s: option `%s' is ambiguous\n"
msgstr "%s: ÎÅÏÄÎÏÚÎÁÞÎÙÊ ËÌÀÞ `%s'\n"
#: src/getopt.c:700
#: lib/getopt.c:700
#, c-format
msgid "%s: option `--%s' doesn't allow an argument\n"
msgstr "%s: ËÌÀÞ `--%s' ÄÏÌÖÅÎ ÉÓÐÏÌØÚÏ×ÁÔØÓÑ ÂÅÚ ÁÒÇÕÍÅÎÔÁ\n"
#: src/getopt.c:705
#: lib/getopt.c:705
#, c-format
msgid "%s: option `%c%s' doesn't allow an argument\n"
msgstr "%s: ËÌÀÞ `%c%s' ÄÏÌÖÅÎ ÉÓÐÏÌØÚÏ×ÁÔØÓÑ ÂÅÚ ÁÒÇÕÍÅÎÔÁ\n"
#: src/getopt.c:723 src/getopt.c:896
#: lib/getopt.c:723 lib/getopt.c:896
#, c-format
msgid "%s: option `%s' requires an argument\n"
msgstr "%s: ËÌÀÞ `%s' ÄÏÌÖÅÎ ÉÓÐÏÌØÚÏ×ÁÔØÓÑ Ó ÁÒÇÕÍÅÎÔÏÍ\n"
#. --option
#: src/getopt.c:752
#: lib/getopt.c:752
#, c-format
msgid "%s: unrecognized option `--%s'\n"
msgstr "%s: ÎÅÉÚ×ÅÓÔÎÙÊ ËÌÀÞ `--%s'\n"
#. +option or -option
#: src/getopt.c:756
#: lib/getopt.c:756
#, c-format
msgid "%s: unrecognized option `%c%s'\n"
msgstr "%s: ÎÅÉÚ×ÅÓÔÎÙÊ ËÌÀÞ `%c%s'\n"
#. 1003.2 specifies the format of this message.
#: src/getopt.c:782
#: lib/getopt.c:782
#, c-format
msgid "%s: illegal option -- %c\n"
msgstr "%s: ÎÅÄÏÐÕÓÔÉÍÙÊ ËÌÀÞ -- %c\n"
#: src/getopt.c:785
#: lib/getopt.c:785
#, c-format
msgid "%s: invalid option -- %c\n"
msgstr "%s: ÎÅ×ÅÒÎÙÊ ËÌÀÞ -- %c\n"
#. 1003.2 specifies the format of this message.
#: src/getopt.c:815 src/getopt.c:945
#: lib/getopt.c:815 lib/getopt.c:945
#, c-format
msgid "%s: option requires an argument -- %c\n"
msgstr "%s: ËÌÀÞ ÄÏÌÖÅÎ ÉÓÐÏÌØÚÏ×ÁÔØÓÑ Ó ÁÒÇÕÍÅÎÔÏÍ -- %c\n"
#: src/getopt.c:862
#: lib/getopt.c:862
#, fuzzy, c-format
msgid "%s: option `-W %s' is ambiguous\n"
msgstr "%s: ÎÅÏÄÎÏÚÎÁÞÎÙÊ ËÌÀÞ `%s'\n"
#: src/getopt.c:880
#: lib/getopt.c:880
#, fuzzy, c-format
msgid "%s: option `-W %s' doesn't allow an argument\n"
msgstr "%s: ËÌÀÞ `--%s' ÄÏÌÖÅÎ ÉÓÐÏÌØÚÏ×ÁÔØÓÑ ÂÅÚ ÁÒÇÕÍÅÎÔÁ\n"
#~ msgid "gotos"
#~ msgstr "ÂÅÚÕÓÌÏ×ÎÙÈ ÐÅÒÅÈÏÄÏ×"
#, fuzzy
#~ msgid "fatal error: "
#~ msgstr "ÆÁÔÁÌØÎÁÑ ÏÛÉÂËÁ: %s\n"
#, fuzzy
#~ msgid ""
#~ "Usage: %s [-dhklntvyV] [-b file-prefix] [-o outfile] [-p name-prefix]\n"

View File

@@ -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];

View File

@@ -1,14 +1,6 @@
## Process this file with automake to produce Makefile.in -*-Makefile-*-
AUTOMAKE_OPTIONS = 1.4 ../lib/ansi2knr
bin_PROGRAMS = bison
bison_SOURCES = LR0.c allocate.c closure.c conflicts.c derives.c \
files.c getargs.c gram.c lalr.c lex.c main.c nullable.c output.c \
print.c reader.c reduce.c symtab.c warshall.c
EXTRA_bison_SOURCES = vmsgetargs.c
DEFS = @DEFS@ \
-DXPFILE=\"${datadir}/bison.simple\" \
-DXPFILE1=\"${datadir}/bison.hairy\" \
@@ -16,7 +8,18 @@ DEFS = @DEFS@ \
INCLUDES = -I../intl -I$(top_srcdir)/intl -I..
LDADD = @INTLLIBS@ ../lib/libbison.a
noinst_HEADERS = alloc.h files.h gram.h lex.h machine.h state.h \
bin_PROGRAMS = bison
bison_SOURCES = LR0.c allocate.c closure.c complain.c conflicts.c \
derives.c \
files.c getargs.c gram.c lalr.c lex.c main.c nullable.c \
output.c \
print.c reader.c reduce.c symtab.c warshall.c
EXTRA_bison_SOURCES = vmsgetargs.c
noinst_HEADERS = alloc.h complain.h files.h gram.h lex.h machine.h \
state.h \
symtab.h system.h types.h
data_DATA = bison.simple bison.hairy

269
src/complain.c Normal file
View File

@@ -0,0 +1,269 @@
/* Declaration for error-reporting function for Bison.
Copyright (C) 2000 Free Software Foundation, Inc.
This program is free software; you can redistribute it and/or modify it
under the terms of the GNU General Public License as published by the
Free Software Foundation; either version 2, or (at your option) any
later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
USA. */
/* Based on error.c and error.h,
written by David MacKenzie <djm@gnu.ai.mit.edu>. */
#ifdef HAVE_CONFIG_H
# include <config.h>
#endif
#include <stdio.h>
#if HAVE_VPRINTF || HAVE_DOPRNT || _LIBC
# if __STDC__
# include <stdarg.h>
# define VA_START(args, lastarg) va_start(args, lastarg)
# else
# include <varargs.h>
# define VA_START(args, lastarg) va_start(args)
# endif
#else
# define va_alist a1, a2, a3, a4, a5, a6, a7, a8
# define va_dcl char *a1, *a2, *a3, *a4, *a5, *a6, *a7, *a8;
#endif
#if STDC_HEADERS || _LIBC
# include <stdlib.h>
# include <string.h>
#else
void exit ();
#endif
#include "complain.h"
#ifndef _
# define _(String) String
#endif
#ifdef _LIBC
/* In the GNU C library, there is a predefined variable for this. */
# define program_name program_invocation_name
#else /* not _LIBC */
/* The calling program should define program_name and set it to the
name of the executing program. */
extern char *program_name;
#endif
/* This variable is incremented each time `warn' is called. */
unsigned int warn_message_count;
/* This variable is incremented each time `complain' is called. */
unsigned int complain_message_count;
/* Sometimes we want to have at most one error per line. This
variable controls whether this mode is selected or not. */
int error_one_per_line;
/*--------------------------------.
| 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);
}

75
src/complain.h Normal file
View File

@@ -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_ */

View File

@@ -50,6 +50,7 @@ Boston, MA 02111-1307, USA. */
#include "files.h"
#include "alloc.h"
#include "gram.h"
#include "complain.h"
FILE *finput = NULL;
FILE *foutput = NULL;
@@ -78,14 +79,12 @@ extern int noparserflag;
extern char *mktemp(); /* So the compiler won't complain */
extern char *getenv();
extern void perror();
char *stringappend PARAMS((char *, int, char *));
void openfiles PARAMS((void));
void open_extra_files PARAMS((void));
FILE *tryopen PARAMS((char *, char *)); /* This might be a good idea */
int tryclose PARAMS((FILE *));
void done PARAMS((int));
extern char *program_name;
extern int verboseflag;
@@ -231,7 +230,7 @@ openfiles (void)
finput = tryopen(infile, "r");
if (! noparserflag)
if (! noparserflag)
{
filename = getenv("BISON_SIMPLE");
#ifdef MSDOS
@@ -266,7 +265,7 @@ openfiles (void)
/* use permanent name for actions file */
actfile = stringappend(name_base, short_base_length, ".act");
faction = tryopen(actfile, "w");
}
}
#ifdef MSDOS
if (! noparserflag)
@@ -338,7 +337,7 @@ open_extra_files (void)
tryclose(fparser);
if (! noparserflag)
if (! noparserflag)
{
filename = (char *) getenv ("BISON_HAIRY");
#ifdef MSDOS
@@ -368,20 +367,17 @@ open_extra_files (void)
}
/* JF to make file opening easier. This func tries to open file
NAME with mode MODE, and prints an error message if it fails. */
/* JF to make file opening easier. This func tries to open file
NAME with mode MODE, and prints an error message if it fails. */
FILE *
tryopen (char *name, char *mode)
{
FILE *ptr;
ptr = fopen(name, mode);
if (ptr == NULL)
{
fprintf(stderr, "%s: ", program_name);
perror(name);
done(2);
}
ptr = fopen (name, mode);
if (!ptr)
error (2, errno, _("cannot open file `%s'"), name);
return ptr;
}
@@ -395,16 +391,13 @@ tryclose (FILE *ptr)
result = fclose (ptr);
if (result == EOF)
{
fprintf (stderr, "%s: ", program_name);
perror ("fclose");
done (2);
}
error (2, errno, _("cannot close file"));
return result;
}
void
done (int k)
done (void)
{
tryclose(faction);
tryclose(fattrs);
@@ -413,8 +406,8 @@ done (int k)
tryclose(fparser);
tryclose(foutput);
/* JF write out the output file */
if (k == 0 && ftable)
/* JF write out the output file */
if (!complain_message_count && ftable)
{
FILE *ftmp;
register int c;
@@ -445,8 +438,10 @@ done (int k)
delete(tmpattrsfile);
if (ftable)
delete(tmptabfile);
if (k==0) sys$exit(SS$_NORMAL);
sys$exit(SS$_ABORT);
/* Don't call exit again, we're in atexit ().
if (!complain_message_count)
sys$exit(SS$_NORMAL);
sys$exit(SS$_ABORT); */
#else
#if (defined (MSDOS) || (defined(_WIN32) && !defined(__CYGWIN32__)))
if (actfile && ! noparserflag) unlink(actfile);
@@ -454,6 +449,7 @@ done (int k)
if (tmptabfile) unlink(tmptabfile);
if (tmpdefsfile) unlink(tmpdefsfile);
#endif /* MSDOS || (_WIN32 && !__CYGWIN32__) */
exit(k);
/* Don't call exit again, we're in atexit ().
exit (complain_message_count ? 1 : 0); */
#endif /* not VMS, or __VMS_POSIX */
}

View File

@@ -1,22 +1,22 @@
/* File names and variables for bison,
Copyright (C) 1984, 1989 Free Software Foundation, Inc.
Copyright (C) 1984, 1989, 2000 Free Software Foundation, Inc.
This file is part of Bison, the GNU Compiler Compiler.
This file is part of Bison, the GNU Compiler Compiler.
Bison is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2, or (at your option)
any later version.
Bison is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2, or (at your option)
any later version.
Bison is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
Bison is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with Bison; see the file COPYING. If not, write to
the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA. */
You should have received a copy of the GNU General Public License
along with Bison; see the file COPYING. If not, write to
the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA. */
/* These two should be pathnames for opening the sample parser files.
@@ -45,9 +45,12 @@ extern char *spec_name_prefix; /* for -a, from getargs.c */
extern char *spec_file_prefix;
extern char *infile;
extern int lineno;
extern char *outfile;
extern char *defsfile;
extern char *tabfile;
extern char *attrsfile;
extern char *guardfile;
extern char *actfile;
void done PARAMS((void));

View File

@@ -66,8 +66,8 @@ usage (FILE *stream)
{
/* Some efforts were made to ease the translators' task, please
continue. */
fprintf (stream, _("\
GNU bison generates parsers for LALR(1) grammars.\n"));
fputs (_("\
GNU bison generates parsers for LALR(1) grammars.\n"), stream);
putc ('\n', stream);
fprintf (stream, _("\
@@ -80,14 +80,14 @@ for the equivalent short option also. Similarly for optional arguments.\n"),
stream);
putc ('\n', stream);
fprintf (stream, _("\
fputs (_("\
Operation modes:\n\
-h, --help display this help and exit\n\
-V, --version output version information and exit\n\
-y, --yacc emulate POSIX yacc\n"));
-y, --yacc emulate POSIX yacc\n"), stream);
putc ('\n', stream);
fprintf (stream, _("\
fputs (_("\
Parser:\n\
-t, --debug instrument the parser for debugging\n\
-p, --name-prefix=PREFIX prepend PREFIX to the external symbols\n\
@@ -95,20 +95,19 @@ Parser:\n\
-n, --no-parser generate the tables only\n\
-r, --raw number the tokens from 3\n\
-k, --token-table include a table of token names\n\
"));
"), stream);
putc ('\n', stream);
fprintf (stream, _("\
fputs (_("\
Output:\n\
-d, --defines also produce a header file\n\
-v, --verbose also produce an explanation of the automaton\n\
-b, --file-prefix=PREFIX specify a PREFIX for output files\n\
-o, --output-file=FILE leave output to FILE\n"));
-o, --output-file=FILE leave output to FILE\n"), stream);
putc ('\n', stream);
fprintf (stream, _("\
Report bugs to <bug-bison@gnu.org>.\n"),
program_name);
fputs (_("\
Report bugs to <bug-bison@gnu.org>.\n"), stream);
}
void

View File

@@ -24,7 +24,7 @@ Boston, MA 02111-1307, USA. */
lalr(), the entry point, builds these data structures:
goto_map, from_state and to_state
goto_map, from_state and to_state
record each shift transition which accepts a variable (a nonterminal).
ngotos is the number of such transitions.
from_state[t] is the state number which a transition leads from
@@ -39,7 +39,7 @@ The elements of LAruleno that apply to state s are those from
lookaheads[s] through lookaheads[s+1]-1.
Each element of LAruleno is a rule number.
If lr is the length of LAruleno, then a number from 0 to lr-1
If lr is the length of LAruleno, then a number from 0 to lr-1
can specify both a rule and a state where the rule might be applied.
LA is a lr by ntokens matrix of bits.
@@ -55,7 +55,7 @@ If LA[l, i] and LA[l, j] are both 1 for i != j, it is a conflict.
#include "state.h"
#include "alloc.h"
#include "gram.h"
#include "complain.h"
extern short **derives;
extern char *nullable;
@@ -92,7 +92,6 @@ void compute_lookaheads PARAMS((void));
void digraph PARAMS((short **));
void traverse PARAMS((register int));
extern void toomany PARAMS((char *));
extern void berror PARAMS((char *));
static int infinity;
@@ -291,7 +290,7 @@ set_goto_map (void)
if (ISTOKEN(symbol)) break;
if (ngotos == MAXSHORT)
toomany(_("gotos"));
fatal (_("too many gotos (max %d)"), MAXSHORT);
ngotos++;
goto_map[symbol]++;
@@ -413,7 +412,7 @@ initialize_F (void)
if (nullable[symbol])
edge[nedges++] = map_goto(stateno, symbol);
}
if (nedges)
{
reads[i] = rp = NEW2(nedges + 1, short);

View File

@@ -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;
}

View File

@@ -22,10 +22,10 @@
#include <stdio.h>
#include "system.h"
#include "machine.h" /* for MAXSHORT */
#include "files.h"
#include "complain.h"
extern int lineno;
extern int verboseflag;
extern char *infile;
/* Nonzero means failure has been detected; don't write a parser file. */
int failure;
@@ -34,14 +34,6 @@ int failure;
char *program_name;
char *printable_version PARAMS((int));
char *int_to_string PARAMS((int));
void fatal PARAMS((char *));
void fatals PARAMS((char *, char *));
void warn PARAMS((char *));
void warni PARAMS((char *, int));
void warns PARAMS((char *, char *));
void warnss PARAMS((char *, char *, char *));
void warnsss PARAMS((char *, char *, char *, char *));
void toomany PARAMS((char *));
void berror PARAMS((char *));
@@ -57,7 +49,6 @@ extern void initialize_conflicts PARAMS((void));
extern void verbose PARAMS((void));
extern void terse PARAMS((void));
extern void output PARAMS((void));
extern void done PARAMS((int));
/* VMS complained about using `int'. */
@@ -70,17 +61,20 @@ main (int argc, char *argv[])
bindtextdomain (PACKAGE, LOCALEDIR);
textdomain (PACKAGE);
failure = 0;
lineno = 0;
getargs(argc, argv);
/* Be ready to clean up if we exit.*/
atexit (done);
openfiles();
/* read the input. Copy some parts of it to fguard, faction, ftable and fattrs.
In file reader.c.
The other parts are recorded in the grammar; see gram.h. */
reader();
if (failure)
done(failure);
reader ();
if (complain_message_count)
exit (1);
/* find useless nonterminals and productions and reduce the grammar. In
file reduce.c */
@@ -110,8 +104,9 @@ main (int argc, char *argv[])
/* output the tables and the parser to ftable. In file output. */
output();
done(failure);
return failure;
done ();
exit (complain_message_count ? 1 : 0);
}
/* 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();
}

View File

@@ -110,6 +110,7 @@ YYNTBASE = ntokens.
#include "files.h"
#include "gram.h"
#include "state.h"
#include "complain.h"
extern int debugflag;
@@ -133,7 +134,6 @@ extern char *consistent;
extern short *goto_map;
extern short *from_state;
extern short *to_state;
extern int lineno;
void output_headers PARAMS((void));
void output_trailers PARAMS((void));
@@ -164,8 +164,6 @@ int matching_state PARAMS((int));
int pack_vector PARAMS((int));
extern void berror PARAMS((char *));
extern void fatals PARAMS((char *, char *));
extern char *int_to_string PARAMS((int));
extern void reader_output_yylsp PARAMS((FILE *));
static int nvectors;
@@ -1198,7 +1196,7 @@ pack_vector (int vector)
{
loc = j + from[k];
if (loc > MAXTABLE)
fatals(_("maximum table size (%s) exceeded"), int_to_string(MAXTABLE));
fatal (_("maximum table size (%d) exceeded"), MAXTABLE);
if (table[loc] != 0)
ok = 0;

View File

@@ -35,6 +35,7 @@
#include "lex.h"
#include "gram.h"
#include "machine.h"
#include "complain.h"
#define LTYPESTR "\
\n\
@@ -61,7 +62,6 @@ typedef\n\
/* Number of slots allocated (but not necessarily used yet) in `rline' */
int rline_allocated;
extern char *program_name;
extern int definesflag;
extern int nolinesflag;
extern int noparserflag;
@@ -79,17 +79,8 @@ extern void output_headers PARAMS((void));
extern void output_trailers PARAMS((void));
extern void free_symtab PARAMS((void));
extern void open_extra_files PARAMS((void));
extern char *int_to_string PARAMS((int));
extern char *printable_version PARAMS((int));
extern void fatal PARAMS((char *));
extern void fatals PARAMS((char *, char *));
extern void warn PARAMS((char *));
extern void warni PARAMS((char *, int));
extern void warns PARAMS((char *, char *));
extern void warnss PARAMS((char *, char *, char *));
extern void warnsss PARAMS((char *, char *, char *, char *));
extern void unlex PARAMS((int));
extern void done PARAMS((int));
extern int skip_white_space PARAMS((void));
extern int parse_percent_token PARAMS((void));
@@ -160,9 +151,9 @@ skip_to_char (int target)
{
int c;
if (target == '\n')
warn(_(" Skipping to next \\n"));
complain (_(" Skipping to next \\n"));
else
warni(_(" Skipping to next %c"), target);
complain (_(" Skipping to next %c"), target);
do
c = skip_white_space();
@@ -189,7 +180,7 @@ copy_string (FILE *finput, FILE *foutput, int match)
fatal (_("unterminated string at end of file"));
if (c == '\n')
{
warn (_("unterminated string"));
complain (_("unterminated string"));
ungetc (c, finput);
c = match; /* invent terminator */
continue;
@@ -221,7 +212,6 @@ static inline void
copy_comment (FILE *finput, FILE *foutput, int c)
{
int cplus_comment;
register int match;
register int ended;
cplus_comment = (c == '/');
@@ -431,15 +421,15 @@ read_declarations (void)
break;
default:
warns(_("unrecognized: %s"), token_buffer);
complain (_("unrecognized: %s"), token_buffer);
skip_to_char('%');
}
}
else if (c == EOF)
fatal(_("no input grammar"));
fatal (_("no input grammar"));
else
{
warns (_("unknown character: %s"), printable_version(c));
complain (_("unknown character: %s"), printable_version(c));
skip_to_char('%');
}
}
@@ -490,7 +480,8 @@ copy_definition (void)
break;
case EOF:
fatal(_("unterminated `%{' definition"));
fatal ("%s",
_("unterminated `%{' definition"));
default:
putc(c, fattrs);
@@ -531,7 +522,7 @@ parse_token_decl (int what_is, int what_is_not)
if (tmp_char == '%')
return;
if (tmp_char == EOF)
fatals ("Premature EOF after %s", token_buffer);
fatal (_("Premature EOF after %s"), token_buffer);
token = lex();
if (token == COMMA)
@@ -568,7 +559,7 @@ parse_token_decl (int what_is, int what_is_not)
symbol = symval;
if (symbol->class == what_is_not)
warns(_("symbol %s redefined"), symbol->tag);
complain (_("symbol %s redefined"), symbol->tag);
symbol->class = what_is;
if (what_is == SNTERM && oldclass != SNTERM)
symbol->value = nvars++;
@@ -578,7 +569,7 @@ parse_token_decl (int what_is, int what_is_not)
if (symbol->type_name == NULL)
symbol->type_name = typename;
else if (strcmp(typename, symbol->type_name) != 0)
warns(_("type redeclaration for %s"), symbol->tag);
complain (_("type redeclaration for %s"), symbol->tag);
}
}
else if (symbol && token == NUMBER)
@@ -588,8 +579,8 @@ parse_token_decl (int what_is, int what_is_not)
}
else
{
warnss(_("`%s' is invalid in %s"),
token_buffer,
complain (_("`%s' is invalid in %s"),
token_buffer,
(what_is == STOKEN) ? "%token" : "%nterm");
skip_to_char('%');
}
@@ -636,8 +627,8 @@ parse_thong_decl (void)
if (token != IDENTIFIER)
{
warns(_("unrecognized item %s, expected an identifier"),
token_buffer);
complain (_("unrecognized item %s, expected an identifier"),
token_buffer);
skip_to_char('%');
return;
}
@@ -658,8 +649,8 @@ parse_thong_decl (void)
if (token != IDENTIFIER || *symval->tag != '\"')
{
warns(_("expected string constant instead of %s"),
token_buffer);
complain (_("expected string constant instead of %s"),
token_buffer);
skip_to_char('%');
return;
}
@@ -674,15 +665,15 @@ parse_thong_decl (void)
}
/* parse what comes after %start */
/* Parse what comes after %start */
void
parse_start_decl (void)
{
if (start_flag)
warn(_("multiple %start declarations"));
complain ("%s", _("multiple %start declarations"));
if (lex() != IDENTIFIER)
warn(_("invalid %start declaration"));
complain ("%s", _("invalid %start declaration"));
else
{
start_flag = 1;
@@ -702,7 +693,7 @@ parse_type_decl (void)
if (lex() != TYPENAME)
{
warn(_("%type declaration has no <typename>"));
complain ("%s", _("%type declaration has no <typename>"));
skip_to_char('%');
return;
}
@@ -719,7 +710,7 @@ parse_type_decl (void)
if (tmp_char == '%')
return;
if (tmp_char == EOF)
fatals ("Premature EOF after %s", token_buffer);
fatal (_("Premature EOF after %s"), token_buffer);
t = lex();
@@ -734,12 +725,13 @@ parse_type_decl (void)
if (symval->type_name == NULL)
symval->type_name = name;
else if (strcmp(name, symval->type_name) != 0)
warns(_("type redeclaration for %s"), symval->tag);
complain (_("type redeclaration for %s"), symval->tag);
break;
default:
warns(_("invalid %%type declaration due to item: `%s'"), token_buffer);
complain (_("invalid %%type declaration due to item: %s"),
token_buffer);
skip_to_char('%');
}
}
@@ -767,7 +759,7 @@ parse_assoc_decl (int assoc)
if (tmp_char == '%')
return;
if (tmp_char == EOF)
fatals ("Premature EOF after %s", token_buffer);
fatal (_("Premature EOF after %s"), token_buffer);
t = lex();
@@ -785,18 +777,18 @@ parse_assoc_decl (int assoc)
case IDENTIFIER:
if (symval->prec != 0)
warns(_("redefining precedence of %s"), symval->tag);
complain (_("redefining precedence of %s"), symval->tag);
symval->prec = lastprec;
symval->assoc = assoc;
if (symval->class == SNTERM)
warns(_("symbol %s redefined"), symval->tag);
complain (_("symbol %s redefined"), symval->tag);
symval->class = STOKEN;
if (name)
{ /* record the type, if one is specified */
if (symval->type_name == NULL)
symval->type_name = name;
else if (strcmp(name, symval->type_name) != 0)
warns(_("type redeclaration for %s"), symval->tag);
complain (_("type redeclaration for %s"), symval->tag);
}
break;
@@ -808,7 +800,7 @@ parse_assoc_decl (int assoc)
}
else
{
warns(_("invalid text (%s) - number should be after identifier"),
complain (_("invalid text (%s) - number should be after identifier"),
token_buffer);
skip_to_char('%');
}
@@ -818,7 +810,7 @@ parse_assoc_decl (int assoc)
return;
default:
warns(_("unexpected item: %s"), token_buffer);
complain (_("unexpected item: %s"), token_buffer);
skip_to_char('%');
}
@@ -842,7 +834,7 @@ parse_union_decl (void)
int cplus_comment;
if (typed)
warn(_("multiple %union declarations"));
complain ("%s", _("multiple %union declarations"));
typed = 1;
@@ -900,7 +892,7 @@ parse_union_decl (void)
}
}
if (c == EOF)
fatal(_("unterminated comment at end of file"));
fatal (_("unterminated comment at end of file"));
if (!cplus_comment && c == '*')
{
@@ -926,7 +918,7 @@ parse_union_decl (void)
case '}':
if (count == 0)
warn (_("unmatched close-brace (`}')"));
complain (_("unmatched close-brace (`}')"));
count--;
if (count <= 0)
{
@@ -970,7 +962,7 @@ parse_expect_decl (void)
ungetc (c, finput);
if (count <= 0 || count > 10)
warn(_("argument of %expect is not an integer"));
complain ("%s", _("argument of %expect is not an integer"));
expected_conflicts = atoi (buffer);
}
@@ -1002,23 +994,22 @@ copy_at (FILE *finput, FILE *foutput, int stack_offset)
yylsp_needed = 1;
}
else
warns (_("@%s is invalid"), printable_version (c));
complain (_("@%s is invalid"), printable_version (c));
}
/* Get the data type (alternative in the union) of the value for symbol n in rule rule. */
/* Get the data type (alternative in the union) of the value for
symbol n in rule rule. */
char *
get_type_name (int n, symbol_list *rule)
{
static char *msg = N_("invalid $ value");
register int i;
register symbol_list *rp;
if (n < 0)
{
warn(_(msg));
complain (_("invalid $ value"));
return NULL;
}
@@ -1030,7 +1021,7 @@ get_type_name (int n, symbol_list *rule)
rp = rp->next;
if (rp == NULL || rp->sym == NULL)
{
warn(_(msg));
complain (_("invalid $ value"));
return NULL;
}
i++;
@@ -1089,7 +1080,7 @@ copy_guard (symbol_list *rule, int stack_offset)
count--;
else
{
warn(_("unmatched right brace (`}')"));
complain (_("unmatched right brace (`}')"));
c = getc(finput); /* skip it */
}
break;
@@ -1136,7 +1127,8 @@ copy_guard (symbol_list *rule, int stack_offset)
if (type_name)
fprintf(fguard, ".%s", type_name);
if(!type_name && typed)
warns(_("$$ of `%s' has no declared type"), rule->sym->tag);
complain (_("$$ of `%s' has no declared type"),
rule->sym->tag);
}
else if (isdigit(c) || c == '-')
{
@@ -1151,12 +1143,12 @@ copy_guard (symbol_list *rule, int stack_offset)
if (type_name)
fprintf(fguard, ".%s", type_name);
if (!type_name && typed)
warnss (_("$%s of `%s' has no declared type"),
int_to_string(n), rule->sym->tag);
complain (_("$%d of `%s' has no declared type"),
n, rule->sym->tag);
continue;
}
else
warns(_("$%s is invalid"), printable_version(c));
complain (_("$%s is invalid"), printable_version (c));
break;
case '@':
@@ -1164,7 +1156,8 @@ copy_guard (symbol_list *rule, int stack_offset)
break;
case EOF:
fatal (_("unterminated %%guard clause"));
fatal ("%s",
_("unterminated %guard clause"));
default:
putc (c, fguard);
@@ -1274,8 +1267,8 @@ copy_action (symbol_list *rule, int stack_offset)
if (type_name)
fprintf(faction, ".%s", type_name);
if(!type_name && typed)
warns(_("$$ of `%s' has no declared type"),
rule->sym->tag);
complain (_("$$ of `%s' has no declared type"),
rule->sym->tag);
}
else if (isdigit(c) || c == '-')
{
@@ -1290,12 +1283,12 @@ copy_action (symbol_list *rule, int stack_offset)
if (type_name)
fprintf(faction, ".%s", type_name);
if(!type_name && typed)
warnss(_("$%s of `%s' has no declared type"),
int_to_string(n), rule->sym->tag);
complain (_("$%d of `%s' has no declared type"),
n, rule->sym->tag);
continue;
}
else
warns(_("$%s is invalid"), printable_version(c));
complain (_("$%s is invalid"), printable_version (c));
break;
@@ -1304,7 +1297,7 @@ copy_action (symbol_list *rule, int stack_offset)
break;
case EOF:
fatal(_("unmatched `{'"));
fatal (_("unmatched `{'"));
default:
putc(c, faction);
@@ -1390,14 +1383,14 @@ readgram (void)
t = lex();
if (t != COLON)
{
warn(_("ill-formed rule: initial symbol not followed by colon"));
complain (_("ill-formed rule: initial symbol not followed by colon"));
unlex(t);
}
}
if (nrules == 0 && t == BAR)
{
warn(_("grammar starts with vertical bar"));
complain (_("grammar starts with vertical bar"));
lhs = symval; /* BOGUS: use a random symval */
}
/* start a new rule and record its lhs. */
@@ -1428,7 +1421,7 @@ readgram (void)
nvars++;
}
else if (lhs->class == STOKEN)
warns(_("rule given for %s, which is a token"), lhs->tag);
complain (_("rule given for %s, which is a token"), lhs->tag);
/* read the rhs of the rule. */
@@ -1526,7 +1519,7 @@ readgram (void)
if (t == PREC)
{
warn(_("two @prec's in a row"));
complain (_("two @prec's in a row"));
t = lex();
crule->ruleprec = symval;
t = lex();
@@ -1534,7 +1527,8 @@ readgram (void)
if (t == GUARD)
{
if (! semantic_parser)
warn(_("%%guard present but %%semantic_parser not specified"));
complain ("%s",
_("%guard present but %semantic_parser not specified"));
copy_guard(crule, rulelength);
t = lex();
@@ -1543,13 +1537,13 @@ readgram (void)
{
/* This case never occurs -wjh */
if (actionflag)
warn(_("two actions at end of one rule"));
complain (_("two actions at end of one rule"));
copy_action(crule, rulelength);
actionflag = 1;
xactions++; /* -wjh */
t = lex();
}
/* If $$ is being set in default way, warn if any type
/* If $$ is being set in default way, report if any type
mismatch. */
else if (!xactions
&& first_rhs
@@ -1558,13 +1552,13 @@ readgram (void)
if (lhs->type_name == 0
|| first_rhs->type_name == 0
|| strcmp(lhs->type_name,first_rhs->type_name))
warnss(_("type clash (`%s' `%s') on default action"),
lhs->type_name ? lhs->type_name : "",
first_rhs->type_name ? first_rhs->type_name : "");
complain (_("type clash (`%s' `%s') on default action"),
lhs->type_name ? lhs->type_name : "",
first_rhs->type_name ? first_rhs->type_name : "");
}
/* Warn if there is no default for $$ but we need one. */
else if (!xactions && !first_rhs && lhs->type_name != 0)
warn(_("empty rule for typed nonterminal, and no action"));
complain (_("empty rule for typed nonterminal, and no action"));
if (t == SEMICOLON)
t = lex();
}
@@ -1608,7 +1602,7 @@ readgram (void)
else
{
warns(_("invalid input: %s"), token_buffer);
complain (_("invalid input: %s"), token_buffer);
t = lex();
}
}
@@ -1616,10 +1610,10 @@ readgram (void)
/* grammar has been read. Do some checking */
if (nsyms > MAXSHORT)
fatals(_("too many symbols (tokens plus nonterminals); maximum %s"),
int_to_string(MAXSHORT));
fatal (_("too many symbols (tokens plus nonterminals); maximum %d"),
MAXSHORT);
if (nrules == 0)
fatal(_("no rules in the input grammar"));
fatal (_("no rules in the input grammar"));
if (typed == 0 /* JF put out same default YYSTYPE as YACC does */
&& !value_components_used)
@@ -1637,8 +1631,8 @@ readgram (void)
for (bp = firstsymbol; bp; bp = bp->next)
if (bp->class == SUNKNOWN)
{
warns(_("symbol %s is used, but is not defined as a token and has no rules"),
bp->tag);
complain (_("symbol %s is used, but is not defined as a token and has no rules"),
bp->tag);
bp->class = SNTERM;
bp->value = nvars++;
}
@@ -1676,7 +1670,7 @@ get_type (void)
if (t != TYPENAME)
{
warn(_("ill-formed %type declaration"));
complain (_("ill-formed %type declaration"));
return t;
}
@@ -1700,7 +1694,7 @@ get_type (void)
if (symval->type_name == NULL)
symval->type_name = name;
else if (strcmp(name, symval->type_name) != 0)
warns(_("type redeclaration for %s"), symval->tag);
complain (_("type redeclaration for %s"), symval->tag);
break;
@@ -1755,8 +1749,8 @@ packsymbols (void)
{
if (bp->prec != 0 && bp->alias->prec != 0
&& bp->user_token_number == SALIAS)
warnss(_("conflicting precedences for %s and %s"),
bp->tag, bp->alias->tag);
complain (_("conflicting precedences for %s and %s"),
bp->tag, bp->alias->tag);
if (bp->prec != 0)
bp->alias->prec = bp->prec;
else
@@ -1765,15 +1759,15 @@ packsymbols (void)
if (bp->assoc != bp->alias->assoc)
{
if (bp->assoc != 0 && bp->alias->assoc != 0
&& bp->user_token_number == SALIAS)
warnss(_("conflicting assoc values for %s and %s"),
bp->tag, bp->alias->tag);
if (bp->assoc != 0)
bp->alias->assoc = bp->assoc;
else
bp->assoc = bp->alias->assoc;
}
if (bp->assoc != 0 && bp->alias->assoc != 0
&& bp->user_token_number == SALIAS)
complain (_("conflicting assoc values for %s and %s"),
bp->tag, bp->alias->tag);
if (bp->assoc != 0)
bp->alias->assoc = bp->assoc;
else
bp->assoc = bp->alias->assoc;
}
if (bp->user_token_number == SALIAS)
continue; /* do not do processing below for SALIASs */
@@ -1818,10 +1812,10 @@ packsymbols (void)
if (bp->user_token_number == SALIAS)
continue;
if (token_translations[bp->user_token_number] != 2)
warnsss(_("tokens %s and %s both assigned number %s"),
tags[token_translations[bp->user_token_number]],
bp->tag,
int_to_string(bp->user_token_number));
complain (_("tokens %s and %s both assigned number %d"),
tags[token_translations[bp->user_token_number]],
bp->tag,
bp->user_token_number);
token_translations[bp->user_token_number] = bp->value;
}
}
@@ -1832,9 +1826,9 @@ packsymbols (void)
output_token_defines(ftable);
if (startval->class == SUNKNOWN)
fatals(_("the start symbol %s is undefined"), startval->tag);
fatal (_("the start symbol %s is undefined"), startval->tag);
else if (startval->class == STOKEN)
fatals(_("the start symbol %s is a token"), startval->tag);
fatal (_("the start symbol %s is a token"), startval->tag);
start_symbol = startval->value;
@@ -1898,12 +1892,12 @@ output_token_defines (FILE *file)
while ((c = *cp++) && c != '.');
if (c != '\0') continue;
fprintf(file, "#define\t%s\t%d\n", symbol,
((translations && ! rawtoknumflag)
? bp->user_token_number
: bp->value));
fprintf (file, "#define\t%s\t%d\n", symbol,
((translations && ! rawtoknumflag)
? bp->user_token_number
: bp->value));
if (semantic_parser)
fprintf(file, "#define\tT%s\t%d\n", symbol, bp->value);
fprintf (file, "#define\tT%s\t%d\n", symbol, bp->value);
}
putc('\n', file);

View File

@@ -35,6 +35,7 @@ Boston, MA 02111-1307, USA. */
#include "gram.h"
#include "machine.h"
#include "alloc.h"
#include "complain.h"
extern char **tags; /* reader.c */
@@ -74,7 +75,6 @@ static void print_results PARAMS((void));
static void print_notices PARAMS((void));
void dump_grammar PARAMS((void));
extern void fatals PARAMS((char *, char *));
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();

View File

@@ -1,3 +1,20 @@
/* system-dependent definitions for Bison.
Copyright (C) 2000 Free Software Foundation, Inc.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2, or (at your option)
any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software Foundation,
Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
#ifndef BISON_SYSTEM_H
#define BISON_SYSTEM_H
@@ -6,45 +23,73 @@
#endif
#ifdef MSDOS
#include <io.h>
# include <io.h>
#endif
#ifdef _MSC_VER
#include <stdlib.h>
#include <process.h>
#define getpid _getpid
# include <stdlib.h>
# include <process.h>
# define getpid _getpid
#endif
#if defined(HAVE_STDLIB_H) || defined(MSDOS)
#include <stdlib.h>
# include <stdlib.h>
#endif
#if defined(HAVE_UNISTD_H)
#include <unistd.h>
# include <unistd.h>
#endif
#if (defined(VMS) || defined(MSDOS)) && !defined(HAVE_STRING_H)
#define HAVE_STRING_H 1
# define HAVE_STRING_H 1
#endif
#if defined(STDC_HEADERS) || defined(HAVE_STRING_H)
#include <string.h>
# include <string.h>
/* An ANSI string.h and pre-ANSI memory.h might conflict. */
#if !defined(STDC_HEADERS) && defined(HAVE_MEMORY_H)
#include <memory.h>
#endif /* not STDC_HEADERS and HAVE_MEMORY_H */
#ifndef bcopy
#define bcopy(src, dst, num) memcpy((dst), (src), (num))
#endif
# if !defined(STDC_HEADERS) && defined(HAVE_MEMORY_H)
# include <memory.h>
# endif /* not STDC_HEADERS and HAVE_MEMORY_H */
# ifndef bcopy
# define bcopy(src, dst, num) memcpy((dst), (src), (num))
# endif
#else /* not STDC_HEADERS and not HAVE_STRING_H */
#include <strings.h>
# include <strings.h>
/* memory.h and strings.h conflict on some systems. */
#endif /* not STDC_HEADERS and not HAVE_STRING_H */
#if defined(STDC_HEADERS) || defined(HAVE_CTYPE_H)
#include <ctype.h>
# include <ctype.h>
#endif
#include <errno.h>
#ifndef errno
extern int errno;
#endif
/*-----------------.
| GCC extensions. |
`-----------------*/
#ifndef __attribute__
/* This feature is available in gcc versions 2.5 and later. */
# if __GNUC__ < 2 || (__GNUC__ == 2 && __GNUC_MINOR__ < 5) || __STRICT_ANSI__
# define __attribute__(Spec) /* empty */
# endif
/* The __-protected variants of `format' and `printf' attributes
are accepted by gcc versions 2.6.4 (effectively 2.7) and later. */
# if __GNUC__ < 2 || (__GNUC__ == 2 && __GNUC_MINOR__ < 7)
# define __format__ format
# define __printf__ printf
# endif
#endif
/*------.
| NLS. |
`------*/
#ifdef HAVE_LOCALE_H
# include <locale.h>
#endif
@@ -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 */