* src/closure.h: New file.

* src/closure.c: Formatting changes, topological sort over the
functions, use of closure.h.
(initialize_closure, finalize_closure):  Rename as...
(new_closure, free_closure): these.  Adjust dependencies.
* src/LR0.c: Formatting changes, topological sort, use of
cloture.h.
(initialize_states): Rename as...
(new_states): this.
* src/Makefile.am (noinst_HEADERS): Adjust.
This commit is contained in:
Akim Demaille
2000-09-21 10:17:59 +00:00
parent 2fa6973e6f
commit c29240e74b
12 changed files with 973 additions and 871 deletions

View File

@@ -1,4 +1,4 @@
2000-09-20 Akim Demaille <akim@epita.fr> 2000-09-21 Akim Demaille <akim@epita.fr>
* src/closure.h: New file. * src/closure.h: New file.
* src/closure.c: Formatting changes, topological sort over the * src/closure.c: Formatting changes, topological sort over the

122
po/de.po
View File

@@ -5,7 +5,7 @@
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: bison 1.25\n" "Project-Id-Version: bison 1.25\n"
"POT-Creation-Date: 2000-09-20 17:44+0200\n" "POT-Creation-Date: 2000-09-21 10:30+0200\n"
"PO-Revision-Date: 1996-10-10 17:54 MET DST\n" "PO-Revision-Date: 1996-10-10 17:54 MET DST\n"
"Last-Translator: Ulrich Drepper <drepper@gnu.ai.mit.edu>\n" "Last-Translator: Ulrich Drepper <drepper@gnu.ai.mit.edu>\n"
"Language-Team: German <de@li.org>\n" "Language-Team: German <de@li.org>\n"
@@ -23,77 +23,77 @@ msgstr ""
msgid "%s: memory exhausted\n" msgid "%s: memory exhausted\n"
msgstr "%s: Hauptspeicher erschöpft\n" msgstr "%s: Hauptspeicher erschöpft\n"
#: src/conflicts.c:198 src/conflicts.c:222 #: src/conflicts.c:64
msgid "reduce"
msgstr "durch Reduzierung gelöst"
#: src/conflicts.c:204 src/conflicts.c:218
msgid "shift"
msgstr "durch Schieben gelöst"
#: src/conflicts.c:226
msgid "an error"
msgstr "als Fehler betrachtet"
#: src/conflicts.c:298
#, c-format #, c-format
msgid "Conflict in state %d between rule %d and token %s resolved as %s.\n" msgid "Conflict in state %d between rule %d and token %s resolved as %s.\n"
msgstr "Konflikt in Zustand %d zwischen Regel %d and Token %s wurde %s.\n" msgstr "Konflikt in Zustand %d zwischen Regel %d and Token %s wurde %s.\n"
#: src/conflicts.c:343 #: src/conflicts.c:130 src/conflicts.c:153
#, c-format msgid "reduce"
msgid "State %d contains" msgstr "durch Reduzierung gelöst"
msgstr "Zustand %d enthält"
#: src/conflicts.c:346 src/conflicts.c:391 #: src/conflicts.c:136 src/conflicts.c:149
msgid " 1 shift/reduce conflict" msgid "shift"
msgstr " 1 Schiebe/Reduziere Konflikt" msgstr "durch Schieben gelöst"
#: src/conflicts.c:348 src/conflicts.c:393 #: src/conflicts.c:157
#, c-format msgid "an error"
msgid " %d shift/reduce conflicts" msgstr "als Fehler betrachtet"
msgstr " %d Schiebe/Reduziere Konflikte"
#: src/conflicts.c:351 src/conflicts.c:396
msgid " and"
msgstr " und"
#: src/conflicts.c:354 src/conflicts.c:399
msgid " 1 reduce/reduce conflict"
msgstr " 1 Reduziere/Reduziere Konflikt"
#: src/conflicts.c:356 src/conflicts.c:401
#, c-format
msgid " %d reduce/reduce conflicts"
msgstr " %d Reduziere/Reduziere Konflikte"
#. If invoked under the name `yacc', use the output format #. If invoked under the name `yacc', use the output format
#. specified by POSIX. #. specified by POSIX.
#: src/conflicts.c:377 #: src/conflicts.c:446
msgid "conflicts: " msgid "conflicts: "
msgstr "Konflikte: " msgstr "Konflikte: "
#: src/conflicts.c:379 #: src/conflicts.c:448
#, c-format #, c-format
msgid " %d shift/reduce" msgid " %d shift/reduce"
msgstr " %d Schiebe/Reduziere" msgstr " %d Schiebe/Reduziere"
#: src/conflicts.c:383 #: src/conflicts.c:452
#, c-format #, c-format
msgid " %d reduce/reduce" msgid " %d reduce/reduce"
msgstr " %d Reduziere/Reduziere" msgstr " %d Reduziere/Reduziere"
#: src/conflicts.c:388 #: src/conflicts.c:457
#, c-format #, c-format
msgid "%s contains" msgid "%s contains"
msgstr "%s enthält" msgstr "%s enthält"
#: src/conflicts.c:597 src/conflicts.c:711 #: src/conflicts.c:460 src/conflicts.c:525
msgid " 1 shift/reduce conflict"
msgstr " 1 Schiebe/Reduziere Konflikt"
#: src/conflicts.c:462 src/conflicts.c:527
#, c-format
msgid " %d shift/reduce conflicts"
msgstr " %d Schiebe/Reduziere Konflikte"
#: src/conflicts.c:465 src/conflicts.c:530
msgid " and"
msgstr " und"
#: src/conflicts.c:468 src/conflicts.c:533
msgid " 1 reduce/reduce conflict"
msgstr " 1 Reduziere/Reduziere Konflikt"
#: src/conflicts.c:470 src/conflicts.c:535
#, c-format
msgid " %d reduce/reduce conflicts"
msgstr " %d Reduziere/Reduziere Konflikte"
#: src/conflicts.c:522
#, c-format
msgid "State %d contains"
msgstr "Zustand %d enthält"
#: src/conflicts.c:629 src/conflicts.c:749
#, c-format #, c-format
msgid " %-4s\t[reduce using rule %d (%s)]\n" msgid " %-4s\t[reduce using rule %d (%s)]\n"
msgstr " %-4s\t[reduziere mit Regel %d (%s)]\n" msgstr " %-4s\t[reduziere mit Regel %d (%s)]\n"
#: src/conflicts.c:608 src/print.c:221 #: src/conflicts.c:640 src/print.c:222
#, c-format #, c-format
msgid "" msgid ""
" $default\treduce using rule %d (%s)\n" " $default\treduce using rule %d (%s)\n"
@@ -102,12 +102,12 @@ msgstr ""
" $default\treduziere mit Regel %d (%s)\n" " $default\treduziere mit Regel %d (%s)\n"
"\n" "\n"
#: src/conflicts.c:694 src/conflicts.c:706 #: src/conflicts.c:729 src/conflicts.c:743
#, c-format #, c-format
msgid " %-4s\treduce using rule %d (%s)\n" msgid " %-4s\treduce using rule %d (%s)\n"
msgstr " %-4s\treduziere mit Tegel %d (%s)\n" msgstr " %-4s\treduziere mit Tegel %d (%s)\n"
#: src/conflicts.c:732 #: src/conflicts.c:770
#, c-format #, c-format
msgid " $default\treduce using rule %d (%s)\n" msgid " $default\treduce using rule %d (%s)\n"
msgstr " $default\treduziere mit Regel %d (%s)\n" msgstr " $default\treduziere mit Regel %d (%s)\n"
@@ -267,12 +267,12 @@ msgstr "F
msgid "maximum table size (%d) exceeded" msgid "maximum table size (%d) exceeded"
msgstr "maximale Tabellengröße (%s) überschritten" msgstr "maximale Tabellengröße (%s) überschritten"
#: src/print.c:88 #: src/print.c:84
#, c-format #, c-format
msgid " type %d is %s\n" msgid " type %d is %s\n"
msgstr " Typ %d ist %s\n" msgstr " Typ %d ist %s\n"
#: src/print.c:96 #: src/print.c:92
#, c-format #, c-format
msgid "" msgid ""
"\n" "\n"
@@ -285,26 +285,26 @@ msgstr ""
"Zustand %d\n" "Zustand %d\n"
"\n" "\n"
#: src/print.c:140 #: src/print.c:137
#, c-format #, c-format
msgid " (rule %d)" msgid " (rule %d)"
msgstr " (Regel %d)" msgstr " (Regel %d)"
#: src/print.c:167 #: src/print.c:164
msgid " $default\taccept\n" msgid " $default\taccept\n"
msgstr " $default\takzeptiere\n" msgstr " $default\takzeptiere\n"
#: src/print.c:169 #: src/print.c:166
msgid " NO ACTIONS\n" msgid " NO ACTIONS\n"
msgstr " KEINE AKTIONEN\n" msgstr " KEINE AKTIONEN\n"
#. I.e. strcmp(tags[symbol],"$")==0 #. I.e. strcmp(tags[symbol],"$")==0
#: src/print.c:185 #: src/print.c:184
#, c-format #, c-format
msgid " $ \tgo to state %d\n" msgid " $ \tgo to state %d\n"
msgstr " $ \tgehe zu Zustand %d über\n" msgstr " $ \tgehe zu Zustand %d über\n"
#: src/print.c:187 #: src/print.c:186
#, c-format #, c-format
msgid " %-4s\tshift, and go to state %d\n" msgid " %-4s\tshift, and go to state %d\n"
msgstr " %-4s\tSchiebe und gehe zu Zustand %d über\n" msgstr " %-4s\tSchiebe und gehe zu Zustand %d über\n"
@@ -314,13 +314,13 @@ msgstr " %-4s\tSchiebe und gehe zu Zustand %d
msgid " %-4s\terror (nonassociative)\n" msgid " %-4s\terror (nonassociative)\n"
msgstr " %-4s\tFehler (nicht assoziativ)\n" msgstr " %-4s\tFehler (nicht assoziativ)\n"
#: src/print.c:236 #: src/print.c:238
#, c-format #, c-format
msgid " %-4s\tgo to state %d\n" msgid " %-4s\tgo to state %d\n"
msgstr " %-4s\tgehe zu Zustand %d über\n" msgstr " %-4s\tgehe zu Zustand %d über\n"
#. rule # : LHS -> RHS #. rule # : LHS -> RHS
#: src/print.c:261 #: src/print.c:264
msgid "" msgid ""
"\n" "\n"
"Grammar\n" "Grammar\n"
@@ -328,17 +328,17 @@ msgstr ""
"\n" "\n"
"Grammatik\n" "Grammatik\n"
#: src/print.c:266 #: src/print.c:269
#, c-format #, c-format
msgid "rule %-4d %s ->" msgid "rule %-4d %s ->"
msgstr "Regel %-4d %s ->" msgstr "Regel %-4d %s ->"
#: src/print.c:272 #: src/print.c:275
msgid "\t\t/* empty */" msgid "\t\t/* empty */"
msgstr "\t\t/* leer */" msgstr "\t\t/* leer */"
#. TERMINAL (type #) : rule #s terminal is on RHS #. TERMINAL (type #) : rule #s terminal is on RHS
#: src/print.c:277 #: src/print.c:280
msgid "" msgid ""
"\n" "\n"
"Terminals, with rules where they appear\n" "Terminals, with rules where they appear\n"
@@ -348,7 +348,7 @@ msgstr ""
"Terminale und die Regeln un denen sie verwendet werden\n" "Terminale und die Regeln un denen sie verwendet werden\n"
"\n" "\n"
#: src/print.c:325 #: src/print.c:328
msgid "" msgid ""
"\n" "\n"
"Nonterminals, with rules where they appear\n" "Nonterminals, with rules where they appear\n"
@@ -358,11 +358,11 @@ msgstr ""
"Nicht-Terminal und die Regeln in denen sie verwendet werden\n" "Nicht-Terminal und die Regeln in denen sie verwendet werden\n"
"\n" "\n"
#: src/print.c:351 #: src/print.c:354
msgid " on left:" msgid " on left:"
msgstr " auf der linken Seite:" msgstr " auf der linken Seite:"
#: src/print.c:366 #: src/print.c:369
msgid " on right:" msgid " on right:"
msgstr " auf der rechten Seite:" msgstr " auf der rechten Seite:"

122
po/es.po
View File

@@ -30,7 +30,7 @@
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: GNU bison 1.25\n" "Project-Id-Version: GNU bison 1.25\n"
"POT-Creation-Date: 2000-09-20 17:44+0200\n" "POT-Creation-Date: 2000-09-21 10:30+0200\n"
"PO-Revision-Date: 1998-09-21 10:19+0200\n" "PO-Revision-Date: 1998-09-21 10:19+0200\n"
"Last-Translator: Nicolás García-Pedrajas <ngarcia-pedrajas@acm.org>\n" "Last-Translator: Nicolás García-Pedrajas <ngarcia-pedrajas@acm.org>\n"
"Language-Team: Spanish <es@li.org>\n" "Language-Team: Spanish <es@li.org>\n"
@@ -48,55 +48,28 @@ msgstr ""
msgid "%s: memory exhausted\n" msgid "%s: memory exhausted\n"
msgstr "%s: memoria agotada\n" msgstr "%s: memoria agotada\n"
#: src/conflicts.c:198 src/conflicts.c:222 #: src/conflicts.c:64
msgid "reduce"
msgstr "reduce"
#: src/conflicts.c:204 src/conflicts.c:218
msgid "shift"
msgstr "desplaza"
#: src/conflicts.c:226
msgid "an error"
msgstr "un error"
#: src/conflicts.c:298
#, c-format #, c-format
msgid "Conflict in state %d between rule %d and token %s resolved as %s.\n" msgid "Conflict in state %d between rule %d and token %s resolved as %s.\n"
msgstr "" msgstr ""
"El conflicto en el estado %s entre la regla %d y el terminal %s se resuelve " "El conflicto en el estado %s entre la regla %d y el terminal %s se resuelve "
"como %s.\n" "como %s.\n"
#: src/conflicts.c:343 #: src/conflicts.c:130 src/conflicts.c:153
#, c-format msgid "reduce"
msgid "State %d contains" msgstr "reduce"
msgstr "El estado %d contiene"
#: src/conflicts.c:346 src/conflicts.c:391 #: src/conflicts.c:136 src/conflicts.c:149
msgid " 1 shift/reduce conflict" msgid "shift"
msgstr " 1 conflicto desplazamiento/reducción" msgstr "desplaza"
#: src/conflicts.c:348 src/conflicts.c:393 #: src/conflicts.c:157
#, c-format msgid "an error"
msgid " %d shift/reduce conflicts" msgstr "un error"
msgstr " %d conflictos desplazamiento/reducción"
#: src/conflicts.c:351 src/conflicts.c:396
msgid " and"
msgstr " y"
#: src/conflicts.c:354 src/conflicts.c:399
msgid " 1 reduce/reduce conflict"
msgstr " 1 conflicto reducción/reducción"
#: src/conflicts.c:356 src/conflicts.c:401
#, c-format
msgid " %d reduce/reduce conflicts"
msgstr " %d conflictos reducción/reducción"
#. If invoked under the name `yacc', use the output format #. If invoked under the name `yacc', use the output format
#. specified by POSIX. #. specified by POSIX.
#: src/conflicts.c:377 #: src/conflicts.c:446
msgid "conflicts: " msgid "conflicts: "
msgstr "conflictos: " msgstr "conflictos: "
@@ -112,7 +85,7 @@ msgstr "conflictos: "
# ok # ok
# ngp # ngp
# #
#: src/conflicts.c:379 #: src/conflicts.c:448
#, c-format #, c-format
msgid " %d shift/reduce" msgid " %d shift/reduce"
msgstr " %d desplazamiento(s)/reducción(ones)" msgstr " %d desplazamiento(s)/reducción(ones)"
@@ -129,22 +102,49 @@ msgstr " %d desplazamiento(s)/reducci
# #
# ok # ok
# ngp # ngp
#: src/conflicts.c:383 #: src/conflicts.c:452
#, c-format #, c-format
msgid " %d reduce/reduce" msgid " %d reduce/reduce"
msgstr " %d reducción(ones)/reducción(ones)" msgstr " %d reducción(ones)/reducción(ones)"
#: src/conflicts.c:388 #: src/conflicts.c:457
#, c-format #, c-format
msgid "%s contains" msgid "%s contains"
msgstr "%s contiene" msgstr "%s contiene"
#: src/conflicts.c:597 src/conflicts.c:711 #: src/conflicts.c:460 src/conflicts.c:525
msgid " 1 shift/reduce conflict"
msgstr " 1 conflicto desplazamiento/reducción"
#: src/conflicts.c:462 src/conflicts.c:527
#, c-format
msgid " %d shift/reduce conflicts"
msgstr " %d conflictos desplazamiento/reducción"
#: src/conflicts.c:465 src/conflicts.c:530
msgid " and"
msgstr " y"
#: src/conflicts.c:468 src/conflicts.c:533
msgid " 1 reduce/reduce conflict"
msgstr " 1 conflicto reducción/reducción"
#: src/conflicts.c:470 src/conflicts.c:535
#, c-format
msgid " %d reduce/reduce conflicts"
msgstr " %d conflictos reducción/reducción"
#: src/conflicts.c:522
#, c-format
msgid "State %d contains"
msgstr "El estado %d contiene"
#: src/conflicts.c:629 src/conflicts.c:749
#, c-format #, c-format
msgid " %-4s\t[reduce using rule %d (%s)]\n" msgid " %-4s\t[reduce using rule %d (%s)]\n"
msgstr " %-4s\t[reduce usando la regla %d (%s)]\n" msgstr " %-4s\t[reduce usando la regla %d (%s)]\n"
#: src/conflicts.c:608 src/print.c:221 #: src/conflicts.c:640 src/print.c:222
#, c-format #, c-format
msgid "" msgid ""
" $default\treduce using rule %d (%s)\n" " $default\treduce using rule %d (%s)\n"
@@ -153,12 +153,12 @@ msgstr ""
" $default\treduce usando la regla %d (%s)\n" " $default\treduce usando la regla %d (%s)\n"
"\n" "\n"
#: src/conflicts.c:694 src/conflicts.c:706 #: src/conflicts.c:729 src/conflicts.c:743
#, c-format #, c-format
msgid " %-4s\treduce using rule %d (%s)\n" msgid " %-4s\treduce using rule %d (%s)\n"
msgstr " %-4s\treduce usando la regla %d (%s)\n" msgstr " %-4s\treduce usando la regla %d (%s)\n"
#: src/conflicts.c:732 #: src/conflicts.c:770
#, c-format #, c-format
msgid " $default\treduce using rule %d (%s)\n" msgid " $default\treduce using rule %d (%s)\n"
msgstr " $default\treduce usando la regla %d (%s)\n" msgstr " $default\treduce usando la regla %d (%s)\n"
@@ -332,12 +332,12 @@ msgstr "Entrando set_nullable"
msgid "maximum table size (%d) exceeded" msgid "maximum table size (%d) exceeded"
msgstr "excedido el tamaño máximo de la tabla (%s)" msgstr "excedido el tamaño máximo de la tabla (%s)"
#: src/print.c:88 #: src/print.c:84
#, c-format #, c-format
msgid " type %d is %s\n" msgid " type %d is %s\n"
msgstr " el tipo %d es %s\n" msgstr " el tipo %d es %s\n"
#: src/print.c:96 #: src/print.c:92
#, c-format #, c-format
msgid "" msgid ""
"\n" "\n"
@@ -350,26 +350,26 @@ msgstr ""
"estado %d\n" "estado %d\n"
"\n" "\n"
#: src/print.c:140 #: src/print.c:137
#, c-format #, c-format
msgid " (rule %d)" msgid " (rule %d)"
msgstr " (regla %d)" msgstr " (regla %d)"
#: src/print.c:167 #: src/print.c:164
msgid " $default\taccept\n" msgid " $default\taccept\n"
msgstr " $default\taceptar\n" msgstr " $default\taceptar\n"
#: src/print.c:169 #: src/print.c:166
msgid " NO ACTIONS\n" msgid " NO ACTIONS\n"
msgstr " SIN ACCIONES\n" msgstr " SIN ACCIONES\n"
#. I.e. strcmp(tags[symbol],"$")==0 #. I.e. strcmp(tags[symbol],"$")==0
#: src/print.c:185 #: src/print.c:184
#, c-format #, c-format
msgid " $ \tgo to state %d\n" msgid " $ \tgo to state %d\n"
msgstr " $ \tir al estado %d\n" msgstr " $ \tir al estado %d\n"
#: src/print.c:187 #: src/print.c:186
#, c-format #, c-format
msgid " %-4s\tshift, and go to state %d\n" msgid " %-4s\tshift, and go to state %d\n"
msgstr " %-4s\tdesplazar e ir al estado %d\n" msgstr " %-4s\tdesplazar e ir al estado %d\n"
@@ -379,13 +379,13 @@ msgstr " %-4s\tdesplazar e ir al estado %d\n"
msgid " %-4s\terror (nonassociative)\n" msgid " %-4s\terror (nonassociative)\n"
msgstr " %-4s\terror (no asociativo)\n" msgstr " %-4s\terror (no asociativo)\n"
#: src/print.c:236 #: src/print.c:238
#, c-format #, c-format
msgid " %-4s\tgo to state %d\n" msgid " %-4s\tgo to state %d\n"
msgstr " %-4s\tir al estado %d\n" msgstr " %-4s\tir al estado %d\n"
#. rule # : LHS -> RHS #. rule # : LHS -> RHS
#: src/print.c:261 #: src/print.c:264
msgid "" msgid ""
"\n" "\n"
"Grammar\n" "Grammar\n"
@@ -393,7 +393,7 @@ msgstr ""
"\n" "\n"
"Gramática\n" "Gramática\n"
#: src/print.c:266 #: src/print.c:269
#, c-format #, c-format
msgid "rule %-4d %s ->" msgid "rule %-4d %s ->"
msgstr "regla %-4d %s ->" msgstr "regla %-4d %s ->"
@@ -403,12 +403,12 @@ msgstr "regla %-4d %s ->"
# como `vacía/o' - cll # como `vacía/o' - cll
# según el código indica reglas vacías por eso lo puse así # según el código indica reglas vacías por eso lo puse así
# ngp # ngp
#: src/print.c:272 #: src/print.c:275
msgid "\t\t/* empty */" msgid "\t\t/* empty */"
msgstr "\t\t/* vacía */" msgstr "\t\t/* vacía */"
#. TERMINAL (type #) : rule #s terminal is on RHS #. TERMINAL (type #) : rule #s terminal is on RHS
#: src/print.c:277 #: src/print.c:280
msgid "" msgid ""
"\n" "\n"
"Terminals, with rules where they appear\n" "Terminals, with rules where they appear\n"
@@ -418,7 +418,7 @@ msgstr ""
"Terminales con las reglas donde aparecen\n" "Terminales con las reglas donde aparecen\n"
"\n" "\n"
#: src/print.c:325 #: src/print.c:328
msgid "" msgid ""
"\n" "\n"
"Nonterminals, with rules where they appear\n" "Nonterminals, with rules where they appear\n"
@@ -427,11 +427,11 @@ msgstr ""
"\n" "\n"
"No terminales con las reglas donde aparecen\n" "No terminales con las reglas donde aparecen\n"
#: src/print.c:351 #: src/print.c:354
msgid " on left:" msgid " on left:"
msgstr " en la izquierda:" msgstr " en la izquierda:"
#: src/print.c:366 #: src/print.c:369
msgid " on right:" msgid " on right:"
msgstr " en la derecha:" msgstr " en la derecha:"

122
po/et.po
View File

@@ -5,7 +5,7 @@
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: bison 1.25\n" "Project-Id-Version: bison 1.25\n"
"POT-Creation-Date: 2000-09-20 17:44+0200\n" "POT-Creation-Date: 2000-09-21 10:30+0200\n"
"PO-Revision-Date: 2000-04-11 22:19+02:00\n" "PO-Revision-Date: 2000-04-11 22:19+02:00\n"
"Last-Translator: Toomas Soome <tsoome@ut.ee>\n" "Last-Translator: Toomas Soome <tsoome@ut.ee>\n"
"Language-Team: Estonian <et@li.org>\n" "Language-Team: Estonian <et@li.org>\n"
@@ -23,77 +23,77 @@ msgstr "liiga palju olekuid (maks %d)"
msgid "%s: memory exhausted\n" msgid "%s: memory exhausted\n"
msgstr "%s: mälu on otsas\n" msgstr "%s: mälu on otsas\n"
#: src/conflicts.c:198 src/conflicts.c:222 #: src/conflicts.c:64
msgid "reduce"
msgstr "redutseerimine"
#: src/conflicts.c:204 src/conflicts.c:218
msgid "shift"
msgstr "nihutamine"
#: src/conflicts.c:226
msgid "an error"
msgstr "viga"
#: src/conflicts.c:298
#, c-format #, c-format
msgid "Conflict in state %d between rule %d and token %s resolved as %s.\n" msgid "Conflict in state %d between rule %d and token %s resolved as %s.\n"
msgstr "Konflikt olekus %d reegli %d ja märgi %s vahel lahendatud, kui %s.\n" msgstr "Konflikt olekus %d reegli %d ja märgi %s vahel lahendatud, kui %s.\n"
#: src/conflicts.c:343 #: src/conflicts.c:130 src/conflicts.c:153
#, c-format msgid "reduce"
msgid "State %d contains" msgstr "redutseerimine"
msgstr "Olek %d sisaldab"
#: src/conflicts.c:346 src/conflicts.c:391 #: src/conflicts.c:136 src/conflicts.c:149
msgid " 1 shift/reduce conflict" msgid "shift"
msgstr " 1 nihutamine/redutseerimine konflikt" msgstr "nihutamine"
#: src/conflicts.c:348 src/conflicts.c:393 #: src/conflicts.c:157
#, c-format msgid "an error"
msgid " %d shift/reduce conflicts" msgstr "viga"
msgstr " %d nihutamine/redutseerimine konflikti"
#: src/conflicts.c:351 src/conflicts.c:396
msgid " and"
msgstr " ja"
#: src/conflicts.c:354 src/conflicts.c:399
msgid " 1 reduce/reduce conflict"
msgstr " 1 redutseerimine/redutseerimine konflikt"
#: src/conflicts.c:356 src/conflicts.c:401
#, c-format
msgid " %d reduce/reduce conflicts"
msgstr " %d redutseerimine/redutseerimine konflikti"
#. If invoked under the name `yacc', use the output format #. If invoked under the name `yacc', use the output format
#. specified by POSIX. #. specified by POSIX.
#: src/conflicts.c:377 #: src/conflicts.c:446
msgid "conflicts: " msgid "conflicts: "
msgstr "konfliktid: " msgstr "konfliktid: "
#: src/conflicts.c:379 #: src/conflicts.c:448
#, c-format #, c-format
msgid " %d shift/reduce" msgid " %d shift/reduce"
msgstr " %d nihutamine/redutseerimine" msgstr " %d nihutamine/redutseerimine"
#: src/conflicts.c:383 #: src/conflicts.c:452
#, c-format #, c-format
msgid " %d reduce/reduce" msgid " %d reduce/reduce"
msgstr " %d redutseerimine/redutseerimine" msgstr " %d redutseerimine/redutseerimine"
#: src/conflicts.c:388 #: src/conflicts.c:457
#, c-format #, c-format
msgid "%s contains" msgid "%s contains"
msgstr "%s sisaldab" msgstr "%s sisaldab"
#: src/conflicts.c:597 src/conflicts.c:711 #: src/conflicts.c:460 src/conflicts.c:525
msgid " 1 shift/reduce conflict"
msgstr " 1 nihutamine/redutseerimine konflikt"
#: src/conflicts.c:462 src/conflicts.c:527
#, c-format
msgid " %d shift/reduce conflicts"
msgstr " %d nihutamine/redutseerimine konflikti"
#: src/conflicts.c:465 src/conflicts.c:530
msgid " and"
msgstr " ja"
#: src/conflicts.c:468 src/conflicts.c:533
msgid " 1 reduce/reduce conflict"
msgstr " 1 redutseerimine/redutseerimine konflikt"
#: src/conflicts.c:470 src/conflicts.c:535
#, c-format
msgid " %d reduce/reduce conflicts"
msgstr " %d redutseerimine/redutseerimine konflikti"
#: src/conflicts.c:522
#, c-format
msgid "State %d contains"
msgstr "Olek %d sisaldab"
#: src/conflicts.c:629 src/conflicts.c:749
#, c-format #, c-format
msgid " %-4s\t[reduce using rule %d (%s)]\n" msgid " %-4s\t[reduce using rule %d (%s)]\n"
msgstr " %-4s\t[redutseerin, kasutades reeglit %d (%s)]\n" msgstr " %-4s\t[redutseerin, kasutades reeglit %d (%s)]\n"
#: src/conflicts.c:608 src/print.c:221 #: src/conflicts.c:640 src/print.c:222
#, c-format #, c-format
msgid "" msgid ""
" $default\treduce using rule %d (%s)\n" " $default\treduce using rule %d (%s)\n"
@@ -102,12 +102,12 @@ msgstr ""
" $default\tredutseerin kasutades reeglit %d (%s)\n" " $default\tredutseerin kasutades reeglit %d (%s)\n"
"\n" "\n"
#: src/conflicts.c:694 src/conflicts.c:706 #: src/conflicts.c:729 src/conflicts.c:743
#, c-format #, c-format
msgid " %-4s\treduce using rule %d (%s)\n" msgid " %-4s\treduce using rule %d (%s)\n"
msgstr " %-4s\tredutseerin kasutades reeglit %d (%s)\n" msgstr " %-4s\tredutseerin kasutades reeglit %d (%s)\n"
#: src/conflicts.c:732 #: src/conflicts.c:770
#, c-format #, c-format
msgid " $default\treduce using rule %d (%s)\n" msgid " $default\treduce using rule %d (%s)\n"
msgstr " $default\tredutseerin kasutades reeglit %d (%s)\n" msgstr " $default\tredutseerin kasutades reeglit %d (%s)\n"
@@ -288,12 +288,12 @@ msgstr "Entering set_nullable"
msgid "maximum table size (%d) exceeded" msgid "maximum table size (%d) exceeded"
msgstr "ületati maksimaalset tabelisuurust (%d)" msgstr "ületati maksimaalset tabelisuurust (%d)"
#: src/print.c:88 #: src/print.c:84
#, c-format #, c-format
msgid " type %d is %s\n" msgid " type %d is %s\n"
msgstr " tüüp %d on %s\n" msgstr " tüüp %d on %s\n"
#: src/print.c:96 #: src/print.c:92
#, c-format #, c-format
msgid "" msgid ""
"\n" "\n"
@@ -306,26 +306,26 @@ msgstr ""
"olek %d\n" "olek %d\n"
"\n" "\n"
#: src/print.c:140 #: src/print.c:137
#, c-format #, c-format
msgid " (rule %d)" msgid " (rule %d)"
msgstr " (reegel %d)" msgstr " (reegel %d)"
#: src/print.c:167 #: src/print.c:164
msgid " $default\taccept\n" msgid " $default\taccept\n"
msgstr " $default\taktsepteerin\n" msgstr " $default\taktsepteerin\n"
#: src/print.c:169 #: src/print.c:166
msgid " NO ACTIONS\n" msgid " NO ACTIONS\n"
msgstr " TEGEVUSI POLE\n" msgstr " TEGEVUSI POLE\n"
#. I.e. strcmp(tags[symbol],"$")==0 #. I.e. strcmp(tags[symbol],"$")==0
#: src/print.c:185 #: src/print.c:184
#, c-format #, c-format
msgid " $ \tgo to state %d\n" msgid " $ \tgo to state %d\n"
msgstr " $ \tliigu olekule %d\n" msgstr " $ \tliigu olekule %d\n"
#: src/print.c:187 #: src/print.c:186
#, c-format #, c-format
msgid " %-4s\tshift, and go to state %d\n" msgid " %-4s\tshift, and go to state %d\n"
msgstr " %-4s\tnihuta ja liigu olekule %d\n" msgstr " %-4s\tnihuta ja liigu olekule %d\n"
@@ -335,13 +335,13 @@ msgstr " %-4s\tnihuta ja liigu olekule %d\n"
msgid " %-4s\terror (nonassociative)\n" msgid " %-4s\terror (nonassociative)\n"
msgstr " %-4s\tviga (mitteassotsiatiivne)\n" msgstr " %-4s\tviga (mitteassotsiatiivne)\n"
#: src/print.c:236 #: src/print.c:238
#, c-format #, c-format
msgid " %-4s\tgo to state %d\n" msgid " %-4s\tgo to state %d\n"
msgstr " %-4s\tliigu olekule %d\n" msgstr " %-4s\tliigu olekule %d\n"
#. rule # : LHS -> RHS #. rule # : LHS -> RHS
#: src/print.c:261 #: src/print.c:264
msgid "" msgid ""
"\n" "\n"
"Grammar\n" "Grammar\n"
@@ -349,17 +349,17 @@ msgstr ""
"\n" "\n"
"Grammatika\n" "Grammatika\n"
#: src/print.c:266 #: src/print.c:269
#, c-format #, c-format
msgid "rule %-4d %s ->" msgid "rule %-4d %s ->"
msgstr "reegel %-4d %s ->" msgstr "reegel %-4d %s ->"
#: src/print.c:272 #: src/print.c:275
msgid "\t\t/* empty */" msgid "\t\t/* empty */"
msgstr "\t\t/* tühi */" msgstr "\t\t/* tühi */"
#. TERMINAL (type #) : rule #s terminal is on RHS #. TERMINAL (type #) : rule #s terminal is on RHS
#: src/print.c:277 #: src/print.c:280
msgid "" msgid ""
"\n" "\n"
"Terminals, with rules where they appear\n" "Terminals, with rules where they appear\n"
@@ -369,7 +369,7 @@ msgstr ""
"Terminalid, koos reeglitega, kus nad ilmuvad\n" "Terminalid, koos reeglitega, kus nad ilmuvad\n"
"\n" "\n"
#: src/print.c:325 #: src/print.c:328
msgid "" msgid ""
"\n" "\n"
"Nonterminals, with rules where they appear\n" "Nonterminals, with rules where they appear\n"
@@ -379,11 +379,11 @@ msgstr ""
"Mitteterminalid, koos reeglitega, kus nad ilmuvad\n" "Mitteterminalid, koos reeglitega, kus nad ilmuvad\n"
"\n" "\n"
#: src/print.c:351 #: src/print.c:354
msgid " on left:" msgid " on left:"
msgstr " vasakul:" msgstr " vasakul:"
#: src/print.c:366 #: src/print.c:369
msgid " on right:" msgid " on right:"
msgstr " paremal:" msgstr " paremal:"

122
po/fr.po
View File

@@ -5,7 +5,7 @@
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: bison 1.25\n" "Project-Id-Version: bison 1.25\n"
"POT-Creation-Date: 2000-09-20 17:44+0200\n" "POT-Creation-Date: 2000-09-21 10:30+0200\n"
"PO-Revision-Date: 1996-03-19 20:05 EST\n" "PO-Revision-Date: 1996-03-19 20:05 EST\n"
"Last-Translator: Dominique Boucher <boucherd@IRO.UMontreal.CA>\n" "Last-Translator: Dominique Boucher <boucherd@IRO.UMontreal.CA>\n"
"Language-Team: French <fr@li.org>\n" "Language-Team: French <fr@li.org>\n"
@@ -23,78 +23,78 @@ msgstr ""
msgid "%s: memory exhausted\n" msgid "%s: memory exhausted\n"
msgstr "%s: mémoire épuisée\n" msgstr "%s: mémoire épuisée\n"
#: src/conflicts.c:198 src/conflicts.c:222 #: src/conflicts.c:64
msgid "reduce"
msgstr "réduction"
#: src/conflicts.c:204 src/conflicts.c:218
msgid "shift"
msgstr "décalage"
#: src/conflicts.c:226
msgid "an error"
msgstr "une erreur"
#: src/conflicts.c:298
#, c-format #, c-format
msgid "Conflict in state %d between rule %d and token %s resolved as %s.\n" msgid "Conflict in state %d between rule %d and token %s resolved as %s.\n"
msgstr "" msgstr ""
"Conflit à l'état %d entre la règle %d et le terminal %s résolu par %s.\n" "Conflit à l'état %d entre la règle %d et le terminal %s résolu par %s.\n"
#: src/conflicts.c:343 #: src/conflicts.c:130 src/conflicts.c:153
#, c-format msgid "reduce"
msgid "State %d contains" msgstr "réduction"
msgstr "L'état %d contient"
#: src/conflicts.c:346 src/conflicts.c:391 #: src/conflicts.c:136 src/conflicts.c:149
msgid " 1 shift/reduce conflict" msgid "shift"
msgstr " 1 conflit décalage/réduction" msgstr "décalage"
#: src/conflicts.c:348 src/conflicts.c:393 #: src/conflicts.c:157
#, c-format msgid "an error"
msgid " %d shift/reduce conflicts" msgstr "une erreur"
msgstr " %d conflits décalage/réduction"
#: src/conflicts.c:351 src/conflicts.c:396
msgid " and"
msgstr " et"
#: src/conflicts.c:354 src/conflicts.c:399
msgid " 1 reduce/reduce conflict"
msgstr "1 conflit réduction/réduction"
#: src/conflicts.c:356 src/conflicts.c:401
#, c-format
msgid " %d reduce/reduce conflicts"
msgstr " %d conflits réduction/réduction"
#. If invoked under the name `yacc', use the output format #. If invoked under the name `yacc', use the output format
#. specified by POSIX. #. specified by POSIX.
#: src/conflicts.c:377 #: src/conflicts.c:446
msgid "conflicts: " msgid "conflicts: "
msgstr "conflits: " msgstr "conflits: "
#: src/conflicts.c:379 #: src/conflicts.c:448
#, c-format #, c-format
msgid " %d shift/reduce" msgid " %d shift/reduce"
msgstr " %d décalage/réduction" msgstr " %d décalage/réduction"
#: src/conflicts.c:383 #: src/conflicts.c:452
#, c-format #, c-format
msgid " %d reduce/reduce" msgid " %d reduce/reduce"
msgstr " %d réduction/réduction" msgstr " %d réduction/réduction"
#: src/conflicts.c:388 #: src/conflicts.c:457
#, c-format #, c-format
msgid "%s contains" msgid "%s contains"
msgstr "%s contient" msgstr "%s contient"
#: src/conflicts.c:597 src/conflicts.c:711 #: src/conflicts.c:460 src/conflicts.c:525
msgid " 1 shift/reduce conflict"
msgstr " 1 conflit décalage/réduction"
#: src/conflicts.c:462 src/conflicts.c:527
#, c-format
msgid " %d shift/reduce conflicts"
msgstr " %d conflits décalage/réduction"
#: src/conflicts.c:465 src/conflicts.c:530
msgid " and"
msgstr " et"
#: src/conflicts.c:468 src/conflicts.c:533
msgid " 1 reduce/reduce conflict"
msgstr "1 conflit réduction/réduction"
#: src/conflicts.c:470 src/conflicts.c:535
#, c-format
msgid " %d reduce/reduce conflicts"
msgstr " %d conflits réduction/réduction"
#: src/conflicts.c:522
#, c-format
msgid "State %d contains"
msgstr "L'état %d contient"
#: src/conflicts.c:629 src/conflicts.c:749
#, c-format #, c-format
msgid " %-4s\t[reduce using rule %d (%s)]\n" msgid " %-4s\t[reduce using rule %d (%s)]\n"
msgstr " %-4s\t[réduction par la règle %d (%s)\n" msgstr " %-4s\t[réduction par la règle %d (%s)\n"
#: src/conflicts.c:608 src/print.c:221 #: src/conflicts.c:640 src/print.c:222
#, c-format #, c-format
msgid "" msgid ""
" $default\treduce using rule %d (%s)\n" " $default\treduce using rule %d (%s)\n"
@@ -103,12 +103,12 @@ msgstr ""
" $défaut\tréduction par la règle %d (%s)\n" " $défaut\tréduction par la règle %d (%s)\n"
"\n" "\n"
#: src/conflicts.c:694 src/conflicts.c:706 #: src/conflicts.c:729 src/conflicts.c:743
#, c-format #, c-format
msgid " %-4s\treduce using rule %d (%s)\n" msgid " %-4s\treduce using rule %d (%s)\n"
msgstr " %-4s\tréduction par la règle %d (%s)\n" msgstr " %-4s\tréduction par la règle %d (%s)\n"
#: src/conflicts.c:732 #: src/conflicts.c:770
#, c-format #, c-format
msgid " $default\treduce using rule %d (%s)\n" msgid " $default\treduce using rule %d (%s)\n"
msgstr " $défaut\tréduction par la règle %d (%s)\n" msgstr " $défaut\tréduction par la règle %d (%s)\n"
@@ -272,12 +272,12 @@ msgstr "Entr
msgid "maximum table size (%d) exceeded" msgid "maximum table size (%d) exceeded"
msgstr "taille maximum des tables (%s) dépassée" msgstr "taille maximum des tables (%s) dépassée"
#: src/print.c:88 #: src/print.c:84
#, c-format #, c-format
msgid " type %d is %s\n" msgid " type %d is %s\n"
msgstr " le type %d est %s\n" msgstr " le type %d est %s\n"
#: src/print.c:96 #: src/print.c:92
#, c-format #, c-format
msgid "" msgid ""
"\n" "\n"
@@ -290,26 +290,26 @@ msgstr ""
"état %d\n" "état %d\n"
"\n" "\n"
#: src/print.c:140 #: src/print.c:137
#, c-format #, c-format
msgid " (rule %d)" msgid " (rule %d)"
msgstr " (règle %d)" msgstr " (règle %d)"
#: src/print.c:167 #: src/print.c:164
msgid " $default\taccept\n" msgid " $default\taccept\n"
msgstr " $défaut\taccepter\n" msgstr " $défaut\taccepter\n"
#: src/print.c:169 #: src/print.c:166
msgid " NO ACTIONS\n" msgid " NO ACTIONS\n"
msgstr " PAS D'ACTION\n" msgstr " PAS D'ACTION\n"
#. I.e. strcmp(tags[symbol],"$")==0 #. I.e. strcmp(tags[symbol],"$")==0
#: src/print.c:185 #: src/print.c:184
#, c-format #, c-format
msgid " $ \tgo to state %d\n" msgid " $ \tgo to state %d\n"
msgstr " $ \taller à l'état %d\n" msgstr " $ \taller à l'état %d\n"
#: src/print.c:187 #: src/print.c:186
#, c-format #, c-format
msgid " %-4s\tshift, and go to state %d\n" msgid " %-4s\tshift, and go to state %d\n"
msgstr " %-4s\tdécalage et aller à l'état %d\n" msgstr " %-4s\tdécalage et aller à l'état %d\n"
@@ -319,13 +319,13 @@ msgstr " %-4s\td
msgid " %-4s\terror (nonassociative)\n" msgid " %-4s\terror (nonassociative)\n"
msgstr " %-4s\terreur (non-associatif)\n" msgstr " %-4s\terreur (non-associatif)\n"
#: src/print.c:236 #: src/print.c:238
#, c-format #, c-format
msgid " %-4s\tgo to state %d\n" msgid " %-4s\tgo to state %d\n"
msgstr " %-4s\taller à l'état %d\n" msgstr " %-4s\taller à l'état %d\n"
#. rule # : LHS -> RHS #. rule # : LHS -> RHS
#: src/print.c:261 #: src/print.c:264
msgid "" msgid ""
"\n" "\n"
"Grammar\n" "Grammar\n"
@@ -333,17 +333,17 @@ msgstr ""
"\n" "\n"
"Grammaire\n" "Grammaire\n"
#: src/print.c:266 #: src/print.c:269
#, c-format #, c-format
msgid "rule %-4d %s ->" msgid "rule %-4d %s ->"
msgstr "règle %-4d %s ->" msgstr "règle %-4d %s ->"
#: src/print.c:272 #: src/print.c:275
msgid "\t\t/* empty */" msgid "\t\t/* empty */"
msgstr "\t\t/* epsilon */" msgstr "\t\t/* epsilon */"
#. TERMINAL (type #) : rule #s terminal is on RHS #. TERMINAL (type #) : rule #s terminal is on RHS
#: src/print.c:277 #: src/print.c:280
msgid "" msgid ""
"\n" "\n"
"Terminals, with rules where they appear\n" "Terminals, with rules where they appear\n"
@@ -353,7 +353,7 @@ msgstr ""
"Terminaux, suivis des règles où ils apparaissent\n" "Terminaux, suivis des règles où ils apparaissent\n"
"\n" "\n"
#: src/print.c:325 #: src/print.c:328
msgid "" msgid ""
"\n" "\n"
"Nonterminals, with rules where they appear\n" "Nonterminals, with rules where they appear\n"
@@ -363,11 +363,11 @@ msgstr ""
"Catégories, suivis des règles où elles apparaissent\n" "Catégories, suivis des règles où elles apparaissent\n"
"\n" "\n"
#: src/print.c:351 #: src/print.c:354
msgid " on left:" msgid " on left:"
msgstr " à gauche:" msgstr " à gauche:"
#: src/print.c:366 #: src/print.c:369
msgid " on right:" msgid " on right:"
msgstr " à droite:" msgstr " à droite:"

122
po/ja.po
View File

@@ -5,7 +5,7 @@
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: GNU bison 1.28\n" "Project-Id-Version: GNU bison 1.28\n"
"POT-Creation-Date: 2000-09-20 17:44+0200\n" "POT-Creation-Date: 2000-09-21 10:30+0200\n"
"PO-Revision-Date: 1999-09-28 21:10+0900\n" "PO-Revision-Date: 1999-09-28 21:10+0900\n"
"Last-Translator: Daisuke Yamashita <yamad@mb.infoweb.ne.jp>\n" "Last-Translator: Daisuke Yamashita <yamad@mb.infoweb.ne.jp>\n"
"Language-Team: Japanese <ja@li.org>\n" "Language-Team: Japanese <ja@li.org>\n"
@@ -23,77 +23,77 @@ msgstr "%s
msgid "%s: memory exhausted\n" msgid "%s: memory exhausted\n"
msgstr "%s: メモリを使い果たしました\n" msgstr "%s: メモリを使い果たしました\n"
#: src/conflicts.c:198 src/conflicts.c:222 #: src/conflicts.c:64
msgid "reduce"
msgstr "還元"
#: src/conflicts.c:204 src/conflicts.c:218
msgid "shift"
msgstr "シフト"
#: src/conflicts.c:226
msgid "an error"
msgstr "エラー"
#: src/conflicts.c:298
#, c-format #, c-format
msgid "Conflict in state %d between rule %d and token %s resolved as %s.\n" msgid "Conflict in state %d between rule %d and token %s resolved as %s.\n"
msgstr "状態 %d の規則 %d とトークン %s の競合を%sとして解決。\n" msgstr "状態 %d の規則 %d とトークン %s の競合を%sとして解決。\n"
#: src/conflicts.c:343 #: src/conflicts.c:130 src/conflicts.c:153
#, c-format msgid "reduce"
msgid "State %d contains" msgstr "還元"
msgstr "状態 %d が含むのは"
#: src/conflicts.c:346 src/conflicts.c:391 #: src/conflicts.c:136 src/conflicts.c:149
msgid " 1 shift/reduce conflict" msgid "shift"
msgstr " 1 シフト/還元衝突" msgstr "シフト"
#: src/conflicts.c:348 src/conflicts.c:393 #: src/conflicts.c:157
#, c-format msgid "an error"
msgid " %d shift/reduce conflicts" msgstr "エラー"
msgstr " %d シフト/還元衝突"
#: src/conflicts.c:351 src/conflicts.c:396
msgid " and"
msgstr " および"
#: src/conflicts.c:354 src/conflicts.c:399
msgid " 1 reduce/reduce conflict"
msgstr " 1 還元/還元衝突"
#: src/conflicts.c:356 src/conflicts.c:401
#, c-format
msgid " %d reduce/reduce conflicts"
msgstr " %d 還元/還元衝突"
#. If invoked under the name `yacc', use the output format #. If invoked under the name `yacc', use the output format
#. specified by POSIX. #. specified by POSIX.
#: src/conflicts.c:377 #: src/conflicts.c:446
msgid "conflicts: " msgid "conflicts: "
msgstr "衝突: " msgstr "衝突: "
#: src/conflicts.c:379 #: src/conflicts.c:448
#, c-format #, c-format
msgid " %d shift/reduce" msgid " %d shift/reduce"
msgstr " %d シフト/還元" msgstr " %d シフト/還元"
#: src/conflicts.c:383 #: src/conflicts.c:452
#, c-format #, c-format
msgid " %d reduce/reduce" msgid " %d reduce/reduce"
msgstr " %d 還元/還元" msgstr " %d 還元/還元"
#: src/conflicts.c:388 #: src/conflicts.c:457
#, c-format #, c-format
msgid "%s contains" msgid "%s contains"
msgstr "%s には、" msgstr "%s には、"
#: src/conflicts.c:597 src/conflicts.c:711 #: src/conflicts.c:460 src/conflicts.c:525
msgid " 1 shift/reduce conflict"
msgstr " 1 シフト/還元衝突"
#: src/conflicts.c:462 src/conflicts.c:527
#, c-format
msgid " %d shift/reduce conflicts"
msgstr " %d シフト/還元衝突"
#: src/conflicts.c:465 src/conflicts.c:530
msgid " and"
msgstr " および"
#: src/conflicts.c:468 src/conflicts.c:533
msgid " 1 reduce/reduce conflict"
msgstr " 1 還元/還元衝突"
#: src/conflicts.c:470 src/conflicts.c:535
#, c-format
msgid " %d reduce/reduce conflicts"
msgstr " %d 還元/還元衝突"
#: src/conflicts.c:522
#, c-format
msgid "State %d contains"
msgstr "状態 %d が含むのは"
#: src/conflicts.c:629 src/conflicts.c:749
#, c-format #, c-format
msgid " %-4s\t[reduce using rule %d (%s)]\n" msgid " %-4s\t[reduce using rule %d (%s)]\n"
msgstr " %-4s\t[規則 %d を利用して還元 (%s)]\n" msgstr " %-4s\t[規則 %d を利用して還元 (%s)]\n"
#: src/conflicts.c:608 src/print.c:221 #: src/conflicts.c:640 src/print.c:222
#, c-format #, c-format
msgid "" msgid ""
" $default\treduce using rule %d (%s)\n" " $default\treduce using rule %d (%s)\n"
@@ -102,12 +102,12 @@ msgstr ""
" $default\t規則 %d を利用して還元 (%s)\n" " $default\t規則 %d を利用して還元 (%s)\n"
"\n" "\n"
#: src/conflicts.c:694 src/conflicts.c:706 #: src/conflicts.c:729 src/conflicts.c:743
#, c-format #, c-format
msgid " %-4s\treduce using rule %d (%s)\n" msgid " %-4s\treduce using rule %d (%s)\n"
msgstr " %-4s\t規則 %d を利用して還元 (%s)\n" msgstr " %-4s\t規則 %d を利用して還元 (%s)\n"
#: src/conflicts.c:732 #: src/conflicts.c:770
#, c-format #, c-format
msgid " $default\treduce using rule %d (%s)\n" msgid " $default\treduce using rule %d (%s)\n"
msgstr " $default\t規則 %d を利用して還元 (%s)\n" msgstr " $default\t規則 %d を利用して還元 (%s)\n"
@@ -271,12 +271,12 @@ msgstr "set_nullable
msgid "maximum table size (%d) exceeded" msgid "maximum table size (%d) exceeded"
msgstr "最大テーブルサイズ (%s) を超えました" msgstr "最大テーブルサイズ (%s) を超えました"
#: src/print.c:88 #: src/print.c:84
#, c-format #, c-format
msgid " type %d is %s\n" msgid " type %d is %s\n"
msgstr " タイプ %d は %s です\n" msgstr " タイプ %d は %s です\n"
#: src/print.c:96 #: src/print.c:92
#, c-format #, c-format
msgid "" msgid ""
"\n" "\n"
@@ -289,26 +289,26 @@ msgstr ""
"状態 %d\n" "状態 %d\n"
"\n" "\n"
#: src/print.c:140 #: src/print.c:137
#, c-format #, c-format
msgid " (rule %d)" msgid " (rule %d)"
msgstr " (規則 %d)" msgstr " (規則 %d)"
#: src/print.c:167 #: src/print.c:164
msgid " $default\taccept\n" msgid " $default\taccept\n"
msgstr " $default\taccept\n" msgstr " $default\taccept\n"
#: src/print.c:169 #: src/print.c:166
msgid " NO ACTIONS\n" msgid " NO ACTIONS\n"
msgstr " 動作無し\n" msgstr " 動作無し\n"
#. I.e. strcmp(tags[symbol],"$")==0 #. I.e. strcmp(tags[symbol],"$")==0
#: src/print.c:185 #: src/print.c:184
#, c-format #, c-format
msgid " $ \tgo to state %d\n" msgid " $ \tgo to state %d\n"
msgstr " $ \t状態 %d へ\n" msgstr " $ \t状態 %d へ\n"
#: src/print.c:187 #: src/print.c:186
#, c-format #, c-format
msgid " %-4s\tshift, and go to state %d\n" msgid " %-4s\tshift, and go to state %d\n"
msgstr " %-4s\tシフト、および状態 %d へ\n" msgstr " %-4s\tシフト、および状態 %d へ\n"
@@ -318,13 +318,13 @@ msgstr " %-4s\t
msgid " %-4s\terror (nonassociative)\n" msgid " %-4s\terror (nonassociative)\n"
msgstr " %-4s\tエラー (非結合)\n" msgstr " %-4s\tエラー (非結合)\n"
#: src/print.c:236 #: src/print.c:238
#, c-format #, c-format
msgid " %-4s\tgo to state %d\n" msgid " %-4s\tgo to state %d\n"
msgstr " %-4s\t状態 %d へ\n" msgstr " %-4s\t状態 %d へ\n"
#. rule # : LHS -> RHS #. rule # : LHS -> RHS
#: src/print.c:261 #: src/print.c:264
msgid "" msgid ""
"\n" "\n"
"Grammar\n" "Grammar\n"
@@ -332,17 +332,17 @@ msgstr ""
"\n" "\n"
"文法\n" "文法\n"
#: src/print.c:266 #: src/print.c:269
#, c-format #, c-format
msgid "rule %-4d %s ->" msgid "rule %-4d %s ->"
msgstr "規則 %-4d %s ->" msgstr "規則 %-4d %s ->"
#: src/print.c:272 #: src/print.c:275
msgid "\t\t/* empty */" msgid "\t\t/* empty */"
msgstr "\t\t/* 空 */" msgstr "\t\t/* 空 */"
#. TERMINAL (type #) : rule #s terminal is on RHS #. TERMINAL (type #) : rule #s terminal is on RHS
#: src/print.c:277 #: src/print.c:280
msgid "" msgid ""
"\n" "\n"
"Terminals, with rules where they appear\n" "Terminals, with rules where they appear\n"
@@ -352,7 +352,7 @@ msgstr ""
"終端トークン、およびそこに現れた規則\n" "終端トークン、およびそこに現れた規則\n"
"\n" "\n"
#: src/print.c:325 #: src/print.c:328
msgid "" msgid ""
"\n" "\n"
"Nonterminals, with rules where they appear\n" "Nonterminals, with rules where they appear\n"
@@ -362,11 +362,11 @@ msgstr ""
"非終端トークン、およびそこに現れた規則\n" "非終端トークン、およびそこに現れた規則\n"
"\n" "\n"
#: src/print.c:351 #: src/print.c:354
msgid " on left:" msgid " on left:"
msgstr " 左辺:" msgstr " 左辺:"
#: src/print.c:366 #: src/print.c:369
msgid " on right:" msgid " on right:"
msgstr " 右辺:" msgstr " 右辺:"

122
po/nl.po
View File

@@ -5,7 +5,7 @@
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: bison 1.25\n" "Project-Id-Version: bison 1.25\n"
"POT-Creation-Date: 2000-09-20 17:44+0200\n" "POT-Creation-Date: 2000-09-21 10:30+0200\n"
"PO-Revision-Date: 1996-08-27 15:34 MET DST\n" "PO-Revision-Date: 1996-08-27 15:34 MET DST\n"
"Last-Translator: Erick Branderhorst <branderh@debian.org>\n" "Last-Translator: Erick Branderhorst <branderh@debian.org>\n"
"Language-Team: Dutch <nl@li.org>\n" "Language-Team: Dutch <nl@li.org>\n"
@@ -23,77 +23,77 @@ msgstr ""
msgid "%s: memory exhausted\n" msgid "%s: memory exhausted\n"
msgstr "%s: geen geheugen meer beschikbaar\n" msgstr "%s: geen geheugen meer beschikbaar\n"
#: src/conflicts.c:198 src/conflicts.c:222 #: src/conflicts.c:64
msgid "reduce"
msgstr "reduceer"
#: src/conflicts.c:204 src/conflicts.c:218
msgid "shift"
msgstr "verschuif"
#: src/conflicts.c:226
msgid "an error"
msgstr "een fout"
#: src/conflicts.c:298
#, c-format #, c-format
msgid "Conflict in state %d between rule %d and token %s resolved as %s.\n" msgid "Conflict in state %d between rule %d and token %s resolved as %s.\n"
msgstr "Conflict in stadium %d tussen regel %d en teken %s opgelost als %s.\n" msgstr "Conflict in stadium %d tussen regel %d en teken %s opgelost als %s.\n"
#: src/conflicts.c:343 #: src/conflicts.c:130 src/conflicts.c:153
#, c-format msgid "reduce"
msgid "State %d contains" msgstr "reduceer"
msgstr "Stadium %d bevat"
#: src/conflicts.c:346 src/conflicts.c:391 #: src/conflicts.c:136 src/conflicts.c:149
msgid " 1 shift/reduce conflict" msgid "shift"
msgstr " 1 verschuif/reduceer conflict" msgstr "verschuif"
#: src/conflicts.c:348 src/conflicts.c:393 #: src/conflicts.c:157
#, c-format msgid "an error"
msgid " %d shift/reduce conflicts" msgstr "een fout"
msgstr " %d verschuif/reduceer conflicten"
#: src/conflicts.c:351 src/conflicts.c:396
msgid " and"
msgstr " en"
#: src/conflicts.c:354 src/conflicts.c:399
msgid " 1 reduce/reduce conflict"
msgstr " 1 reduceer/reduceer conflict"
#: src/conflicts.c:356 src/conflicts.c:401
#, c-format
msgid " %d reduce/reduce conflicts"
msgstr " %d reduceer/reduceer conflicten"
#. If invoked under the name `yacc', use the output format #. If invoked under the name `yacc', use the output format
#. specified by POSIX. #. specified by POSIX.
#: src/conflicts.c:377 #: src/conflicts.c:446
msgid "conflicts: " msgid "conflicts: "
msgstr "conflictueerd: " msgstr "conflictueerd: "
#: src/conflicts.c:379 #: src/conflicts.c:448
#, c-format #, c-format
msgid " %d shift/reduce" msgid " %d shift/reduce"
msgstr " %d vershuif/reduceer" msgstr " %d vershuif/reduceer"
#: src/conflicts.c:383 #: src/conflicts.c:452
#, c-format #, c-format
msgid " %d reduce/reduce" msgid " %d reduce/reduce"
msgstr " %d reduceer/reduceer" msgstr " %d reduceer/reduceer"
#: src/conflicts.c:388 #: src/conflicts.c:457
#, c-format #, c-format
msgid "%s contains" msgid "%s contains"
msgstr "%s bevat" msgstr "%s bevat"
#: src/conflicts.c:597 src/conflicts.c:711 #: src/conflicts.c:460 src/conflicts.c:525
msgid " 1 shift/reduce conflict"
msgstr " 1 verschuif/reduceer conflict"
#: src/conflicts.c:462 src/conflicts.c:527
#, c-format
msgid " %d shift/reduce conflicts"
msgstr " %d verschuif/reduceer conflicten"
#: src/conflicts.c:465 src/conflicts.c:530
msgid " and"
msgstr " en"
#: src/conflicts.c:468 src/conflicts.c:533
msgid " 1 reduce/reduce conflict"
msgstr " 1 reduceer/reduceer conflict"
#: src/conflicts.c:470 src/conflicts.c:535
#, c-format
msgid " %d reduce/reduce conflicts"
msgstr " %d reduceer/reduceer conflicten"
#: src/conflicts.c:522
#, c-format
msgid "State %d contains"
msgstr "Stadium %d bevat"
#: src/conflicts.c:629 src/conflicts.c:749
#, c-format #, c-format
msgid " %-4s\t[reduce using rule %d (%s)]\n" msgid " %-4s\t[reduce using rule %d (%s)]\n"
msgstr " %-4s\t[reduceer gebruikt regel %d (%s)]\n" msgstr " %-4s\t[reduceer gebruikt regel %d (%s)]\n"
#: src/conflicts.c:608 src/print.c:221 #: src/conflicts.c:640 src/print.c:222
#, c-format #, c-format
msgid "" msgid ""
" $default\treduce using rule %d (%s)\n" " $default\treduce using rule %d (%s)\n"
@@ -102,12 +102,12 @@ msgstr ""
" $default\treduce using rule %d (%s)\n" " $default\treduce using rule %d (%s)\n"
"\n" "\n"
#: src/conflicts.c:694 src/conflicts.c:706 #: src/conflicts.c:729 src/conflicts.c:743
#, c-format #, c-format
msgid " %-4s\treduce using rule %d (%s)\n" msgid " %-4s\treduce using rule %d (%s)\n"
msgstr "" msgstr ""
#: src/conflicts.c:732 #: src/conflicts.c:770
#, c-format #, c-format
msgid " $default\treduce using rule %d (%s)\n" msgid " $default\treduce using rule %d (%s)\n"
msgstr "" msgstr ""
@@ -271,12 +271,12 @@ msgstr "Inkomende set nullable"
msgid "maximum table size (%d) exceeded" msgid "maximum table size (%d) exceeded"
msgstr "maximale tabel grootte (%s) overschreden" msgstr "maximale tabel grootte (%s) overschreden"
#: src/print.c:88 #: src/print.c:84
#, c-format #, c-format
msgid " type %d is %s\n" msgid " type %d is %s\n"
msgstr "" msgstr ""
#: src/print.c:96 #: src/print.c:92
#, c-format #, c-format
msgid "" msgid ""
"\n" "\n"
@@ -289,26 +289,26 @@ msgstr ""
"stadium %d\n" "stadium %d\n"
"\n" "\n"
#: src/print.c:140 #: src/print.c:137
#, c-format #, c-format
msgid " (rule %d)" msgid " (rule %d)"
msgstr " (regel %d)" msgstr " (regel %d)"
#: src/print.c:167 #: src/print.c:164
msgid " $default\taccept\n" msgid " $default\taccept\n"
msgstr "" msgstr ""
#: src/print.c:169 #: src/print.c:166
msgid " NO ACTIONS\n" msgid " NO ACTIONS\n"
msgstr " GEEN AKTIES\n" msgstr " GEEN AKTIES\n"
#. I.e. strcmp(tags[symbol],"$")==0 #. I.e. strcmp(tags[symbol],"$")==0
#: src/print.c:185 #: src/print.c:184
#, c-format #, c-format
msgid " $ \tgo to state %d\n" msgid " $ \tgo to state %d\n"
msgstr "" msgstr ""
#: src/print.c:187 #: src/print.c:186
#, c-format #, c-format
msgid " %-4s\tshift, and go to state %d\n" msgid " %-4s\tshift, and go to state %d\n"
msgstr "" msgstr ""
@@ -318,13 +318,13 @@ msgstr ""
msgid " %-4s\terror (nonassociative)\n" msgid " %-4s\terror (nonassociative)\n"
msgstr "" msgstr ""
#: src/print.c:236 #: src/print.c:238
#, c-format #, c-format
msgid " %-4s\tgo to state %d\n" msgid " %-4s\tgo to state %d\n"
msgstr "" msgstr ""
#. rule # : LHS -> RHS #. rule # : LHS -> RHS
#: src/print.c:261 #: src/print.c:264
msgid "" msgid ""
"\n" "\n"
"Grammar\n" "Grammar\n"
@@ -332,17 +332,17 @@ msgstr ""
"\n" "\n"
"Grammatica\n" "Grammatica\n"
#: src/print.c:266 #: src/print.c:269
#, c-format #, c-format
msgid "rule %-4d %s ->" msgid "rule %-4d %s ->"
msgstr "regel %-4d %s ->" msgstr "regel %-4d %s ->"
#: src/print.c:272 #: src/print.c:275
msgid "\t\t/* empty */" msgid "\t\t/* empty */"
msgstr "" msgstr ""
#. TERMINAL (type #) : rule #s terminal is on RHS #. TERMINAL (type #) : rule #s terminal is on RHS
#: src/print.c:277 #: src/print.c:280
msgid "" msgid ""
"\n" "\n"
"Terminals, with rules where they appear\n" "Terminals, with rules where they appear\n"
@@ -352,7 +352,7 @@ msgstr ""
"Terminals, met regels waar ze voorkomen\n" "Terminals, met regels waar ze voorkomen\n"
"\n" "\n"
#: src/print.c:325 #: src/print.c:328
msgid "" msgid ""
"\n" "\n"
"Nonterminals, with rules where they appear\n" "Nonterminals, with rules where they appear\n"
@@ -362,11 +362,11 @@ msgstr ""
"Geen terminals, met regels waar ze voorkomen\n" "Geen terminals, met regels waar ze voorkomen\n"
"\n" "\n"
#: src/print.c:351 #: src/print.c:354
msgid " on left:" msgid " on left:"
msgstr " links:" msgstr " links:"
#: src/print.c:366 #: src/print.c:369
msgid " on right:" msgid " on right:"
msgstr " rechts:" msgstr " rechts:"

122
po/ru.po
View File

@@ -5,7 +5,7 @@
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: bison 1.28a\n" "Project-Id-Version: bison 1.28a\n"
"POT-Creation-Date: 2000-09-20 17:44+0200\n" "POT-Creation-Date: 2000-09-21 10:30+0200\n"
"PO-Revision-Date: 2000-04-12 13:16+04:00\n" "PO-Revision-Date: 2000-04-12 13:16+04:00\n"
"Last-Translator: Dmitry S. Sivachenko <dima@Chg.RU>\n" "Last-Translator: Dmitry S. Sivachenko <dima@Chg.RU>\n"
"Language-Team: Russian <ru@li.org>\n" "Language-Team: Russian <ru@li.org>\n"
@@ -23,78 +23,78 @@ msgstr "
msgid "%s: memory exhausted\n" msgid "%s: memory exhausted\n"
msgstr "%s: ÐÁÍÑÔØ ÉÓÞÅÒÐÁÎÁ\n" msgstr "%s: ÐÁÍÑÔØ ÉÓÞÅÒÐÁÎÁ\n"
#: src/conflicts.c:198 src/conflicts.c:222 #: src/conflicts.c:64
msgid "reduce"
msgstr "×Ù×ÏÄ"
#: src/conflicts.c:204 src/conflicts.c:218
msgid "shift"
msgstr "ÓÄ×ÉÇ"
#: src/conflicts.c:226
msgid "an error"
msgstr "ÏÛÉÂËÁ"
#: src/conflicts.c:298
#, c-format #, c-format
msgid "Conflict in state %d between rule %d and token %s resolved as %s.\n" msgid "Conflict in state %d between rule %d and token %s resolved as %s.\n"
msgstr "" msgstr ""
"ëÏÎÆÌÉËÔ × ÓÏÓÔÏÑÎÉÉ %d ÍÅÖÄÕ ÐÒÁ×ÉÌÏÍ %d É ÌÅËÓÅÍÏÊ %s ÒÁÚÒÅÛÅÎ ËÁË %s.\n" "ëÏÎÆÌÉËÔ × ÓÏÓÔÏÑÎÉÉ %d ÍÅÖÄÕ ÐÒÁ×ÉÌÏÍ %d É ÌÅËÓÅÍÏÊ %s ÒÁÚÒÅÛÅÎ ËÁË %s.\n"
#: src/conflicts.c:343 #: src/conflicts.c:130 src/conflicts.c:153
#, c-format msgid "reduce"
msgid "State %d contains" msgstr "×Ù×ÏÄ"
msgstr "óÏÓÔÏÑÎÉÅ %d ÓÏÄÅÒÖÉÔ"
#: src/conflicts.c:346 src/conflicts.c:391 #: src/conflicts.c:136 src/conflicts.c:149
msgid " 1 shift/reduce conflict" msgid "shift"
msgstr " 1 ËÏÎÆÌÉËÔ ÓÄ×ÉÇÁ/×Ù×ÏÄÁ" msgstr "ÓÄ×ÉÇ"
#: src/conflicts.c:348 src/conflicts.c:393 #: src/conflicts.c:157
#, c-format msgid "an error"
msgid " %d shift/reduce conflicts" msgstr "ÏÛÉÂËÁ"
msgstr " %d ËÏÎÆÌÉËÔÏ× ÓÄ×ÉÇÁ/×Ù×ÏÄÁ"
#: src/conflicts.c:351 src/conflicts.c:396
msgid " and"
msgstr " É"
#: src/conflicts.c:354 src/conflicts.c:399
msgid " 1 reduce/reduce conflict"
msgstr " 1 ËÏÎÆÌÉËÔ ×Ù×ÏÄÁ/×Ù×ÏÄÁ"
#: src/conflicts.c:356 src/conflicts.c:401
#, c-format
msgid " %d reduce/reduce conflicts"
msgstr " %d ËÏÎÆÌÉËÔÏ× ×Ù×ÏÄÁ/×Ù×ÏÄÁ"
#. If invoked under the name `yacc', use the output format #. If invoked under the name `yacc', use the output format
#. specified by POSIX. #. specified by POSIX.
#: src/conflicts.c:377 #: src/conflicts.c:446
msgid "conflicts: " msgid "conflicts: "
msgstr "ËÏÎÆÌÉËÔÙ: " msgstr "ËÏÎÆÌÉËÔÙ: "
#: src/conflicts.c:379 #: src/conflicts.c:448
#, c-format #, c-format
msgid " %d shift/reduce" msgid " %d shift/reduce"
msgstr " %d ÓÄ×ÉÇ/×Ù×ÏÄ" msgstr " %d ÓÄ×ÉÇ/×Ù×ÏÄ"
#: src/conflicts.c:383 #: src/conflicts.c:452
#, c-format #, c-format
msgid " %d reduce/reduce" msgid " %d reduce/reduce"
msgstr " %d ×Ù×ÏÄ/×Ù×ÏÄ" msgstr " %d ×Ù×ÏÄ/×Ù×ÏÄ"
#: src/conflicts.c:388 #: src/conflicts.c:457
#, c-format #, c-format
msgid "%s contains" msgid "%s contains"
msgstr "%s ÓÏÄÅÒÖÉÔ" msgstr "%s ÓÏÄÅÒÖÉÔ"
#: src/conflicts.c:597 src/conflicts.c:711 #: src/conflicts.c:460 src/conflicts.c:525
msgid " 1 shift/reduce conflict"
msgstr " 1 ËÏÎÆÌÉËÔ ÓÄ×ÉÇÁ/×Ù×ÏÄÁ"
#: src/conflicts.c:462 src/conflicts.c:527
#, c-format
msgid " %d shift/reduce conflicts"
msgstr " %d ËÏÎÆÌÉËÔÏ× ÓÄ×ÉÇÁ/×Ù×ÏÄÁ"
#: src/conflicts.c:465 src/conflicts.c:530
msgid " and"
msgstr " É"
#: src/conflicts.c:468 src/conflicts.c:533
msgid " 1 reduce/reduce conflict"
msgstr " 1 ËÏÎÆÌÉËÔ ×Ù×ÏÄÁ/×Ù×ÏÄÁ"
#: src/conflicts.c:470 src/conflicts.c:535
#, c-format
msgid " %d reduce/reduce conflicts"
msgstr " %d ËÏÎÆÌÉËÔÏ× ×Ù×ÏÄÁ/×Ù×ÏÄÁ"
#: src/conflicts.c:522
#, c-format
msgid "State %d contains"
msgstr "óÏÓÔÏÑÎÉÅ %d ÓÏÄÅÒÖÉÔ"
#: src/conflicts.c:629 src/conflicts.c:749
#, c-format #, c-format
msgid " %-4s\t[reduce using rule %d (%s)]\n" msgid " %-4s\t[reduce using rule %d (%s)]\n"
msgstr " %-4s\t[×Ù×ÏÄ Ó ÉÓÐÏÌØÚÏ×ÁÎÉÅÍ ÐÒÁ×ÉÌÁ %d (%s)]\n" msgstr " %-4s\t[×Ù×ÏÄ Ó ÉÓÐÏÌØÚÏ×ÁÎÉÅÍ ÐÒÁ×ÉÌÁ %d (%s)]\n"
#: src/conflicts.c:608 src/print.c:221 #: src/conflicts.c:640 src/print.c:222
#, c-format #, c-format
msgid "" msgid ""
" $default\treduce using rule %d (%s)\n" " $default\treduce using rule %d (%s)\n"
@@ -103,12 +103,12 @@ msgstr ""
" $default\t×Ù×ÏÄ Ó ÉÓÐÏÌØÚÏ×ÁÎÉÅÍ ÐÒÁ×ÉÌÁ %d (%s)\n" " $default\t×Ù×ÏÄ Ó ÉÓÐÏÌØÚÏ×ÁÎÉÅÍ ÐÒÁ×ÉÌÁ %d (%s)\n"
"\n" "\n"
#: src/conflicts.c:694 src/conflicts.c:706 #: src/conflicts.c:729 src/conflicts.c:743
#, c-format #, c-format
msgid " %-4s\treduce using rule %d (%s)\n" msgid " %-4s\treduce using rule %d (%s)\n"
msgstr " %-4s\t×Ù×ÏÄ Ó ÉÓÐÏÌØÚÏ×ÁÎÉÅÍ ÐÒÁ×ÉÌÁ %d (%s)\n" msgstr " %-4s\t×Ù×ÏÄ Ó ÉÓÐÏÌØÚÏ×ÁÎÉÅÍ ÐÒÁ×ÉÌÁ %d (%s)\n"
#: src/conflicts.c:732 #: src/conflicts.c:770
#, c-format #, c-format
msgid " $default\treduce using rule %d (%s)\n" msgid " $default\treduce using rule %d (%s)\n"
msgstr " $default\t×Ù×ÏÄ Ó ÉÓÐÏÌØÚÏ×ÁÎÉÅÍ ÐÒÁ×ÉÌÁ %d (%s)\n" msgstr " $default\t×Ù×ÏÄ Ó ÉÓÐÏÌØÚÏ×ÁÎÉÅÍ ÐÒÁ×ÉÌÁ %d (%s)\n"
@@ -290,12 +290,12 @@ msgstr "
msgid "maximum table size (%d) exceeded" msgid "maximum table size (%d) exceeded"
msgstr "ÐÒÅ×ÙÛÅÎ ÍÁËÓÉÍÁÌØÎÙÊ ÒÁÚÍÅÒ ÔÁÂÌÉÃÙ (%d)" msgstr "ÐÒÅ×ÙÛÅÎ ÍÁËÓÉÍÁÌØÎÙÊ ÒÁÚÍÅÒ ÔÁÂÌÉÃÙ (%d)"
#: src/print.c:88 #: src/print.c:84
#, c-format #, c-format
msgid " type %d is %s\n" msgid " type %d is %s\n"
msgstr " ÔÉÐ %d Ñ×ÌÑÅÔÓÑ %s\n" msgstr " ÔÉÐ %d Ñ×ÌÑÅÔÓÑ %s\n"
#: src/print.c:96 #: src/print.c:92
#, c-format #, c-format
msgid "" msgid ""
"\n" "\n"
@@ -308,26 +308,26 @@ msgstr ""
"ÓÏÓÔÏÑÎÉÅ %d\n" "ÓÏÓÔÏÑÎÉÅ %d\n"
"\n" "\n"
#: src/print.c:140 #: src/print.c:137
#, c-format #, c-format
msgid " (rule %d)" msgid " (rule %d)"
msgstr " (ÐÒÁ×ÉÌÏ %d)" msgstr " (ÐÒÁ×ÉÌÏ %d)"
#: src/print.c:167 #: src/print.c:164
msgid " $default\taccept\n" msgid " $default\taccept\n"
msgstr " $default\tÐÒÉÎÑÔÉÅ\n" msgstr " $default\tÐÒÉÎÑÔÉÅ\n"
#: src/print.c:169 #: src/print.c:166
msgid " NO ACTIONS\n" msgid " NO ACTIONS\n"
msgstr " îåô äåêóô÷éê\n" msgstr " îåô äåêóô÷éê\n"
#. I.e. strcmp(tags[symbol],"$")==0 #. I.e. strcmp(tags[symbol],"$")==0
#: src/print.c:185 #: src/print.c:184
#, c-format #, c-format
msgid " $ \tgo to state %d\n" msgid " $ \tgo to state %d\n"
msgstr " $ \tÐÅÒÅÈÏÄ × ÓÏÓÔÏÑÎÉÅ %d\n" msgstr " $ \tÐÅÒÅÈÏÄ × ÓÏÓÔÏÑÎÉÅ %d\n"
#: src/print.c:187 #: src/print.c:186
#, c-format #, c-format
msgid " %-4s\tshift, and go to state %d\n" msgid " %-4s\tshift, and go to state %d\n"
msgstr " %-4s\tÓÄ×ÉÇ, É ÐÅÒÅÈÏÄ × ÓÏÓÔÏÑÎÉÅ %d\n" msgstr " %-4s\tÓÄ×ÉÇ, É ÐÅÒÅÈÏÄ × ÓÏÓÔÏÑÎÉÅ %d\n"
@@ -337,13 +337,13 @@ msgstr " %-4s\t
msgid " %-4s\terror (nonassociative)\n" msgid " %-4s\terror (nonassociative)\n"
msgstr " %-4s\tÏÛÉÂËÁ (ÎÅÁÓÓÏÃÉÁÔÉ×ÎÁÑ)\n" msgstr " %-4s\tÏÛÉÂËÁ (ÎÅÁÓÓÏÃÉÁÔÉ×ÎÁÑ)\n"
#: src/print.c:236 #: src/print.c:238
#, c-format #, c-format
msgid " %-4s\tgo to state %d\n" msgid " %-4s\tgo to state %d\n"
msgstr " %-4s\tÐÅÒÅÈÏÄ × ÓÏÓÔÏÑÎÉÅ %d\n" msgstr " %-4s\tÐÅÒÅÈÏÄ × ÓÏÓÔÏÑÎÉÅ %d\n"
#. rule # : LHS -> RHS #. rule # : LHS -> RHS
#: src/print.c:261 #: src/print.c:264
msgid "" msgid ""
"\n" "\n"
"Grammar\n" "Grammar\n"
@@ -351,17 +351,17 @@ msgstr ""
"\n" "\n"
"çÒÁÍÍÁÔÉËÁ\n" "çÒÁÍÍÁÔÉËÁ\n"
#: src/print.c:266 #: src/print.c:269
#, c-format #, c-format
msgid "rule %-4d %s ->" msgid "rule %-4d %s ->"
msgstr "ÐÒÁ×ÉÌÏ %-4d %s ->" msgstr "ÐÒÁ×ÉÌÏ %-4d %s ->"
#: src/print.c:272 #: src/print.c:275
msgid "\t\t/* empty */" msgid "\t\t/* empty */"
msgstr "\t\t/* ÐÕÓÔÏ */" msgstr "\t\t/* ÐÕÓÔÏ */"
#. TERMINAL (type #) : rule #s terminal is on RHS #. TERMINAL (type #) : rule #s terminal is on RHS
#: src/print.c:277 #: src/print.c:280
msgid "" msgid ""
"\n" "\n"
"Terminals, with rules where they appear\n" "Terminals, with rules where they appear\n"
@@ -371,7 +371,7 @@ msgstr ""
"ôÅÒÍÉÎÁÌØÎÙÅ ÓÉÍ×ÏÌÙ Ó ÐÒÁ×ÉÌÁÍÉ, × ËÏÔÏÒÙÈ ÏÎÉ ÐÏÑ×ÌÑÀÔÓÑ\n" "ôÅÒÍÉÎÁÌØÎÙÅ ÓÉÍ×ÏÌÙ Ó ÐÒÁ×ÉÌÁÍÉ, × ËÏÔÏÒÙÈ ÏÎÉ ÐÏÑ×ÌÑÀÔÓÑ\n"
"\n" "\n"
#: src/print.c:325 #: src/print.c:328
msgid "" msgid ""
"\n" "\n"
"Nonterminals, with rules where they appear\n" "Nonterminals, with rules where they appear\n"
@@ -381,11 +381,11 @@ msgstr ""
"îÅÔÅÒÍÉÎÁÌØÎÙÅ ÓÉÍ×ÏÌÙ Ó ÐÒÁ×ÉÌÁÍÉ, × ËÏÔÏÒÙÈ ÏÎÉ ÐÏÑ×ÌÑÀÔÓÑ\n" "îÅÔÅÒÍÉÎÁÌØÎÙÅ ÓÉÍ×ÏÌÙ Ó ÐÒÁ×ÉÌÁÍÉ, × ËÏÔÏÒÙÈ ÏÎÉ ÐÏÑ×ÌÑÀÔÓÑ\n"
"\n" "\n"
#: src/print.c:351 #: src/print.c:354
msgid " on left:" msgid " on left:"
msgstr " ÎÁÌÅ×Ï:" msgstr " ÎÁÌÅ×Ï:"
#: src/print.c:366 #: src/print.c:369
msgid " on right:" msgid " on right:"
msgstr " ÎÁÐÒÁ×Ï:" msgstr " ÎÁÐÒÁ×Ï:"

49
src/closure.h Normal file
View File

@@ -0,0 +1,49 @@
/* Subroutines for bison
Copyright (C) 1984, 1989, 2000 Free Software Foundation, Inc.
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 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. */
/* Subroutines of file LR0.c. */
/* Allocates the itemset and ruleset vectors, and precomputes useful
data so that closure can be called. n is the number of elements to
allocate for itemset. */
void new_closure PARAMS ((int n));
/* Given a vector of item numbers ITEMS, of length N, set up ruleset
and itemset to indicate what rules could be run and which items
could be accepted when those items are the active ones.
ruleset contains a bit for each rule. closure sets the bits for
all rules which could potentially describe the next input to be
read.
itemset is a vector of item numbers; itemsetend points to just
beyond the end of the part of it that is significant. closure
places there the indices of all items which represent units of
input that could arrive next. */
void closure PARAMS ((short *items, int n));
/* Frees itemset, ruleset and internal data. */
void free_closure PARAMS ((void));

View File

@@ -36,19 +36,11 @@ extern short *LAruleno;
extern short *lookaheads; extern short *lookaheads;
extern int fixed_outfiles; extern int fixed_outfiles;
extern void initialize_conflicts PARAMS((void)); extern void initialize_conflicts PARAMS ((void));
extern void conflict_log PARAMS((void)); extern void conflict_log PARAMS ((void));
extern void verbose_conflict_log PARAMS((void)); extern void verbose_conflict_log PARAMS ((void));
extern void print_reductions PARAMS((int)); extern void print_reductions PARAMS ((int));
extern void finalize_conflicts PARAMS((void)); extern void finalize_conflicts PARAMS ((void));
static void set_conflicts PARAMS((int));
static void resolve_sr_conflict PARAMS((int, int));
static void flush_shift PARAMS((int, int));
static void log_resolution PARAMS((int, int, int, char *));
static void total_conflicts PARAMS((void));
static void count_sr_conflicts PARAMS((int));
static void count_rr_conflicts PARAMS((int));
char any_conflicts; char any_conflicts;
errs **err_table; errs **err_table;
@@ -62,40 +54,164 @@ static int src_total;
static int rrc_total; static int rrc_total;
static int src_count; static int src_count;
static int rrc_count; static int rrc_count;
static inline void
void log_resolution (int state, int LAno, int token, char *resolution)
initialize_conflicts (void)
{ {
register int i; if (verboseflag)
/* register errs *sp; JF unused */ fprintf (foutput,
_("\
Conflict in state %d between rule %d and token %s resolved as %s.\n"),
state, LAruleno[LAno], tags[token], resolution);
}
conflicts = NEW2(nstates, char);
shiftset = NEW2(tokensetsize, unsigned);
lookaheadset = NEW2(tokensetsize, unsigned);
err_table = NEW2(nstates, errs *); /*------------------------------------------------------------------.
| Turn off the shift recorded for the specified token in the |
| specified state. Used when we resolve a shift-reduce conflict in |
| favor of the reduction. |
`------------------------------------------------------------------*/
any_conflicts = 0; static void
flush_shift (int state, int token)
{
shifts *shiftp;
int k, i;
for (i = 0; i < nstates; i++) shiftp = shift_table[state];
set_conflicts(i);
if (shiftp)
{
k = shiftp->nshifts;
for (i = 0; i < k; i++)
{
if (shiftp->shifts[i]
&& token == accessing_symbol[shiftp->shifts[i]])
(shiftp->shifts[i]) = 0;
}
}
}
/*------------------------------------------------------------------.
| Attempt to resolve shift-reduce conflict for one rule by means of |
| precedence declarations. It has already been checked that the |
| rule has a precedence. A conflict is resolved by modifying the |
| shift or reduce tables so that there is no longer a conflict. |
`------------------------------------------------------------------*/
static void
resolve_sr_conflict (int state, int lookaheadnum)
{
int i;
int mask;
unsigned *fp1;
unsigned *fp2;
int redprec;
errs *errp = (errs *) xmalloc (sizeof (errs) + ntokens * sizeof (short));
short *errtokens = errp->errs;
/* find the rule to reduce by to get precedence of reduction */
redprec = rprec[LAruleno[lookaheadnum]];
mask = 1;
fp1 = LA + lookaheadnum * tokensetsize;
fp2 = lookaheadset;
for (i = 0; i < ntokens; i++)
{
if ((mask & *fp2 & *fp1) && sprec[i])
/* Shift-reduce conflict occurs for token number i
and it has a precedence.
The precedence of shifting is that of token i. */
{
if (sprec[i] < redprec)
{
log_resolution (state, lookaheadnum, i, _("reduce"));
*fp2 &= ~mask; /* flush the shift for this token */
flush_shift (state, i);
}
else if (sprec[i] > redprec)
{
log_resolution (state, lookaheadnum, i, _("shift"));
*fp1 &= ~mask; /* flush the reduce for this token */
}
else
{
/* Matching precedence levels.
For left association, keep only the reduction.
For right association, keep only the shift.
For nonassociation, keep neither. */
switch (sassoc[i])
{
case RIGHT_ASSOC:
log_resolution (state, lookaheadnum, i, _("shift"));
break;
case LEFT_ASSOC:
log_resolution (state, lookaheadnum, i, _("reduce"));
break;
case NON_ASSOC:
log_resolution (state, lookaheadnum, i, _("an error"));
break;
}
if (sassoc[i] != RIGHT_ASSOC)
{
*fp2 &= ~mask; /* flush the shift for this token */
flush_shift (state, i);
}
if (sassoc[i] != LEFT_ASSOC)
{
*fp1 &= ~mask; /* flush the reduce for this token */
}
if (sassoc[i] == NON_ASSOC)
{
/* Record an explicit error for this token. */
*errtokens++ = i;
}
}
}
mask <<= 1;
if (mask == 0)
{
mask = 1;
fp2++;
fp1++;
}
}
errp->nerrs = errtokens - errp->errs;
if (errp->nerrs)
{
/* Some tokens have been explicitly made errors. Allocate
a permanent errs structure for this state, to record them. */
i = (char *) errtokens - (char *) errp;
err_table[state] = (errs *) xmalloc ((unsigned int) i);
bcopy (errp, err_table[state], i);
}
else
err_table[state] = 0;
free (errp);
} }
static void static void
set_conflicts (int state) set_conflicts (int state)
{ {
register int i; int i;
register int k; int k;
register shifts *shiftp; shifts *shiftp;
register unsigned *fp2; unsigned *fp2;
register unsigned *fp3; unsigned *fp3;
register unsigned *fp4; unsigned *fp4;
register unsigned *fp1; unsigned *fp1;
register int symbol; int symbol;
if (consistent[state]) return; if (consistent[state])
return;
for (i = 0; i < tokensetsize; i++) for (i = 0; i < tokensetsize; i++)
lookaheadset[i] = 0; lookaheadset[i] = 0;
@@ -107,17 +223,18 @@ set_conflicts (int state)
for (i = 0; i < k; i++) for (i = 0; i < k; i++)
{ {
symbol = accessing_symbol[shiftp->shifts[i]]; symbol = accessing_symbol[shiftp->shifts[i]];
if (ISVAR(symbol)) break; if (ISVAR (symbol))
SETBIT(lookaheadset, symbol); break;
SETBIT (lookaheadset, symbol);
} }
} }
k = lookaheads[state + 1]; k = lookaheads[state + 1];
fp4 = lookaheadset + tokensetsize; fp4 = lookaheadset + tokensetsize;
/* loop over all rules which require lookahead in this state */ /* Loop over all rules which require lookahead in this state. First
/* first check for shift-reduce conflict, and try to resolve using precedence */ check for shift-reduce conflict, and try to resolve using
precedence */
for (i = lookaheads[state]; i < k; i++) for (i = lookaheads[state]; i < k; i++)
if (rprec[LAruleno[i]]) if (rprec[LAruleno[i]])
{ {
@@ -129,15 +246,15 @@ set_conflicts (int state)
{ {
if (*fp2++ & *fp3++) if (*fp2++ & *fp3++)
{ {
resolve_sr_conflict(state, i); resolve_sr_conflict (state, i);
break; break;
} }
} }
} }
/* loop over all rules which require lookahead in this state */
/* Check for conflicts not resolved above. */
/* Loop over all rules which require lookahead in this state. Check
for conflicts not resolved above. */
for (i = lookaheads[state]; i < k; i++) for (i = lookaheads[state]; i < k; i++)
{ {
fp1 = LA + i * tokensetsize; fp1 = LA + i * tokensetsize;
@@ -161,267 +278,53 @@ set_conflicts (int state)
} }
} }
/* Attempt to resolve shift-reduce conflict for one rule
by means of precedence declarations.
It has already been checked that the rule has a precedence.
A conflict is resolved by modifying the shift or reduce tables
so that there is no longer a conflict. */
static void
resolve_sr_conflict (int state, int lookaheadnum)
{
register int i;
register int mask;
register unsigned *fp1;
register unsigned *fp2;
register int redprec;
errs *errp = (errs *) xmalloc (sizeof(errs) + ntokens * sizeof(short));
short *errtokens = errp->errs;
/* find the rule to reduce by to get precedence of reduction */
redprec = rprec[LAruleno[lookaheadnum]];
mask = 1;
fp1 = LA + lookaheadnum * tokensetsize;
fp2 = lookaheadset;
for (i = 0; i < ntokens; i++)
{
if ((mask & *fp2 & *fp1) && sprec[i])
/* Shift-reduce conflict occurs for token number i
and it has a precedence.
The precedence of shifting is that of token i. */
{
if (sprec[i] < redprec)
{
if (verboseflag) log_resolution(state, lookaheadnum, i, _("reduce"));
*fp2 &= ~mask; /* flush the shift for this token */
flush_shift(state, i);
}
else if (sprec[i] > redprec)
{
if (verboseflag) log_resolution(state, lookaheadnum, i, _("shift"));
*fp1 &= ~mask; /* flush the reduce for this token */
}
else
{
/* Matching precedence levels.
For left association, keep only the reduction.
For right association, keep only the shift.
For nonassociation, keep neither. */
switch (sassoc[i])
{
case RIGHT_ASSOC:
if (verboseflag) log_resolution(state, lookaheadnum, i, _("shift"));
break;
case LEFT_ASSOC:
if (verboseflag) log_resolution(state, lookaheadnum, i, _("reduce"));
break;
case NON_ASSOC:
if (verboseflag) log_resolution(state, lookaheadnum, i, _("an error"));
break;
}
if (sassoc[i] != RIGHT_ASSOC)
{
*fp2 &= ~mask; /* flush the shift for this token */
flush_shift(state, i);
}
if (sassoc[i] != LEFT_ASSOC)
{
*fp1 &= ~mask; /* flush the reduce for this token */
}
if (sassoc[i] == NON_ASSOC)
{
/* Record an explicit error for this token. */
*errtokens++ = i;
}
}
}
mask <<= 1;
if (mask == 0)
{
mask = 1;
fp2++; fp1++;
}
}
errp->nerrs = errtokens - errp->errs;
if (errp->nerrs)
{
/* Some tokens have been explicitly made errors. Allocate
a permanent errs structure for this state, to record them. */
i = (char *) errtokens - (char *) errp;
err_table[state] = (errs *) xmalloc ((unsigned int)i);
bcopy (errp, err_table[state], i);
}
else
err_table[state] = 0;
free(errp);
}
/* turn off the shift recorded for the specified token in the specified state.
Used when we resolve a shift-reduce conflict in favor of the reduction. */
static void
flush_shift (int state, int token)
{
register shifts *shiftp;
register int k, i;
/* register unsigned symbol; JF unused */
shiftp = shift_table[state];
if (shiftp)
{
k = shiftp->nshifts;
for (i = 0; i < k; i++)
{
if (shiftp->shifts[i] && token == accessing_symbol[shiftp->shifts[i]])
(shiftp->shifts[i]) = 0;
}
}
}
static void
log_resolution (int state, int LAno, int token, char *resolution)
{
fprintf(foutput,
_("Conflict in state %d between rule %d and token %s resolved as %s.\n"),
state, LAruleno[LAno], tags[token], resolution);
}
void void
conflict_log (void) initialize_conflicts (void)
{ {
register int i; int i;
/* errs *sp; JF unused */
src_total = 0; conflicts = NEW2 (nstates, char);
rrc_total = 0; shiftset = NEW2 (tokensetsize, unsigned);
lookaheadset = NEW2 (tokensetsize, unsigned);
err_table = NEW2 (nstates, errs *);
any_conflicts = 0;
for (i = 0; i < nstates; i++) for (i = 0; i < nstates; i++)
{ set_conflicts (i);
if (conflicts[i])
{
count_sr_conflicts(i);
count_rr_conflicts(i);
src_total += src_count;
rrc_total += rrc_count;
}
}
total_conflicts();
} }
void
verbose_conflict_log (void)
{
register int i;
src_total = 0;
rrc_total = 0;
for (i = 0; i < nstates; i++)
{
if (conflicts[i])
{
count_sr_conflicts(i);
count_rr_conflicts(i);
src_total += src_count;
rrc_total += rrc_count;
fprintf(foutput, _("State %d contains"), i);
if (src_count == 1)
fprintf(foutput, _(" 1 shift/reduce conflict"));
else if (src_count > 1)
fprintf(foutput, _(" %d shift/reduce conflicts"), src_count);
if (src_count > 0 && rrc_count > 0)
fprintf(foutput, _(" and"));
if (rrc_count == 1)
fprintf(foutput, _(" 1 reduce/reduce conflict"));
else if (rrc_count > 1)
fprintf(foutput, _(" %d reduce/reduce conflicts"), rrc_count);
putc('.', foutput);
putc('\n', foutput);
}
}
total_conflicts();
}
static void
total_conflicts (void)
{
if (src_total == expected_conflicts && rrc_total == 0)
return;
if (fixed_outfiles)
{
/* If invoked under the name `yacc', use the output format
specified by POSIX. */
fprintf(stderr, _("conflicts: "));
if (src_total > 0)
fprintf(stderr, _(" %d shift/reduce"), src_total);
if (src_total > 0 && rrc_total > 0)
fprintf(stderr, ",");
if (rrc_total > 0)
fprintf(stderr, _(" %d reduce/reduce"), rrc_total);
putc('\n', stderr);
}
else
{
fprintf(stderr, _("%s contains"), infile);
if (src_total == 1)
fprintf(stderr, _(" 1 shift/reduce conflict"));
else if (src_total > 1)
fprintf(stderr, _(" %d shift/reduce conflicts"), src_total);
if (src_total > 0 && rrc_total > 0)
fprintf(stderr, _(" and"));
if (rrc_total == 1)
fprintf(stderr, _(" 1 reduce/reduce conflict"));
else if (rrc_total > 1)
fprintf(stderr, _(" %d reduce/reduce conflicts"), rrc_total);
putc('.', stderr);
putc('\n', stderr);
}
}
/*---------------------------------------------.
| Count the number of shift/reduce conflicts. |
`---------------------------------------------*/
static void static void
count_sr_conflicts (int state) count_sr_conflicts (int state)
{ {
register int i; int i;
register int k; int k;
register int mask; int mask;
register shifts *shiftp; shifts *shiftp;
register unsigned *fp1; unsigned *fp1;
register unsigned *fp2; unsigned *fp2;
register unsigned *fp3; unsigned *fp3;
register int symbol; int symbol;
src_count = 0; src_count = 0;
shiftp = shift_table[state]; shiftp = shift_table[state];
if (!shiftp) return; if (!shiftp)
return;
for (i = 0; i < tokensetsize; i++) for (i = 0; i < tokensetsize; i++)
{ {
@@ -432,10 +335,12 @@ count_sr_conflicts (int state)
k = shiftp->nshifts; k = shiftp->nshifts;
for (i = 0; i < k; i++) for (i = 0; i < k; i++)
{ {
if (! shiftp->shifts[i]) continue; if (!shiftp->shifts[i])
continue;
symbol = accessing_symbol[shiftp->shifts[i]]; symbol = accessing_symbol[shiftp->shifts[i]];
if (ISVAR(symbol)) break; if (ISVAR (symbol))
SETBIT(shiftset, symbol); break;
SETBIT (shiftset, symbol);
} }
k = lookaheads[state + 1]; k = lookaheads[state + 1];
@@ -473,24 +378,29 @@ count_sr_conflicts (int state)
} }
/*----------------------------------------------.
| Count the number of reduce/reduce conflicts. |
`----------------------------------------------*/
static void static void
count_rr_conflicts (int state) count_rr_conflicts (int state)
{ {
register int i; int i;
register int j; int j;
register int count; int count;
register unsigned mask; unsigned mask;
register unsigned *baseword; unsigned *baseword;
register unsigned *wordp; unsigned *wordp;
register int m; int m;
register int n; int n;
rrc_count = 0; rrc_count = 0;
m = lookaheads[state]; m = lookaheads[state];
n = lookaheads[state + 1]; n = lookaheads[state + 1];
if (n - m < 2) return; if (n - m < 2)
return;
mask = 1; mask = 1;
baseword = LA + m * tokensetsize; baseword = LA + m * tokensetsize;
@@ -507,7 +417,8 @@ count_rr_conflicts (int state)
wordp += tokensetsize; wordp += tokensetsize;
} }
if (count >= 2) rrc_count++; if (count >= 2)
rrc_count++;
mask <<= 1; mask <<= 1;
if (mask == 0) if (mask == 0)
@@ -518,28 +429,145 @@ count_rr_conflicts (int state)
} }
} }
/*------------------------------------.
| Give a report about the conflicts. |
`------------------------------------*/
static void
total_conflicts (void)
{
if (src_total == expected_conflicts && rrc_total == 0)
return;
if (fixed_outfiles)
{
/* If invoked under the name `yacc', use the output format
specified by POSIX. */
fprintf (stderr, _("conflicts: "));
if (src_total > 0)
fprintf (stderr, _(" %d shift/reduce"), src_total);
if (src_total > 0 && rrc_total > 0)
fprintf (stderr, ",");
if (rrc_total > 0)
fprintf (stderr, _(" %d reduce/reduce"), rrc_total);
putc ('\n', stderr);
}
else
{
fprintf (stderr, _("%s contains"), infile);
if (src_total == 1)
fprintf (stderr, _(" 1 shift/reduce conflict"));
else if (src_total > 1)
fprintf (stderr, _(" %d shift/reduce conflicts"), src_total);
if (src_total > 0 && rrc_total > 0)
fprintf (stderr, _(" and"));
if (rrc_total == 1)
fprintf (stderr, _(" 1 reduce/reduce conflict"));
else if (rrc_total > 1)
fprintf (stderr, _(" %d reduce/reduce conflicts"), rrc_total);
putc ('.', stderr);
putc ('\n', stderr);
}
}
/*---------------------------------------------.
| Compute and give a report on the conflicts. |
`---------------------------------------------*/
void
conflict_log (void)
{
int i;
src_total = 0;
rrc_total = 0;
for (i = 0; i < nstates; i++)
{
if (conflicts[i])
{
count_sr_conflicts (i);
count_rr_conflicts (i);
src_total += src_count;
rrc_total += rrc_count;
}
}
total_conflicts ();
}
void
verbose_conflict_log (void)
{
int i;
src_total = 0;
rrc_total = 0;
for (i = 0; i < nstates; i++)
{
if (conflicts[i])
{
count_sr_conflicts (i);
count_rr_conflicts (i);
src_total += src_count;
rrc_total += rrc_count;
fprintf (foutput, _("State %d contains"), i);
if (src_count == 1)
fprintf (foutput, _(" 1 shift/reduce conflict"));
else if (src_count > 1)
fprintf (foutput, _(" %d shift/reduce conflicts"), src_count);
if (src_count > 0 && rrc_count > 0)
fprintf (foutput, _(" and"));
if (rrc_count == 1)
fprintf (foutput, _(" 1 reduce/reduce conflict"));
else if (rrc_count > 1)
fprintf (foutput, _(" %d reduce/reduce conflicts"), rrc_count);
putc ('.', foutput);
putc ('\n', foutput);
}
}
total_conflicts ();
}
void void
print_reductions (int state) print_reductions (int state)
{ {
register int i; int i;
register int j; int j;
register int k; int k;
register unsigned *fp1; unsigned *fp1;
register unsigned *fp2; unsigned *fp2;
register unsigned *fp3; unsigned *fp3;
register unsigned *fp4; unsigned *fp4;
register int rule; int rule;
register int symbol; int symbol;
register unsigned mask; unsigned mask;
register int m; int m;
register int n; int n;
register int default_LA; int default_LA;
register int default_rule = 0; int default_rule = 0;
register int cmax; int cmax;
register int count; int count;
register shifts *shiftp; shifts *shiftp;
register errs *errp; errs *errp;
int nodefault = 0; int nodefault = 0;
for (i = 0; i < tokensetsize; i++) for (i = 0; i < tokensetsize; i++)
@@ -551,13 +579,16 @@ print_reductions (int state)
k = shiftp->nshifts; k = shiftp->nshifts;
for (i = 0; i < k; i++) for (i = 0; i < k; i++)
{ {
if (! shiftp->shifts[i]) continue; if (!shiftp->shifts[i])
continue;
symbol = accessing_symbol[shiftp->shifts[i]]; symbol = accessing_symbol[shiftp->shifts[i]];
if (ISVAR(symbol)) break; if (ISVAR (symbol))
break;
/* if this state has a shift for the error token, /* if this state has a shift for the error token,
don't use a default rule. */ don't use a default rule. */
if (symbol == error_token_number) nodefault = 1; if (symbol == error_token_number)
SETBIT(shiftset, symbol); nodefault = 1;
SETBIT (shiftset, symbol);
} }
} }
@@ -567,16 +598,17 @@ print_reductions (int state)
k = errp->nerrs; k = errp->nerrs;
for (i = 0; i < k; i++) for (i = 0; i < k; i++)
{ {
if (! errp->errs[i]) continue; if (!errp->errs[i])
continue;
symbol = errp->errs[i]; symbol = errp->errs[i];
SETBIT(shiftset, symbol); SETBIT (shiftset, symbol);
} }
} }
m = lookaheads[state]; m = lookaheads[state];
n = lookaheads[state + 1]; n = lookaheads[state + 1];
if (n - m == 1 && ! nodefault) if (n - m == 1 && !nodefault)
{ {
default_rule = LAruleno[m]; default_rule = LAruleno[m];
@@ -594,8 +626,8 @@ print_reductions (int state)
for (i = 0; i < ntokens; i++) for (i = 0; i < ntokens; i++)
{ {
if (mask & *fp3) if (mask & *fp3)
fprintf(foutput, _(" %-4s\t[reduce using rule %d (%s)]\n"), fprintf (foutput, _(" %-4s\t[reduce using rule %d (%s)]\n"),
tags[i], default_rule, tags[rlhs[default_rule]]); tags[i], default_rule, tags[rlhs[default_rule]]);
mask <<= 1; mask <<= 1;
if (mask == 0) if (mask == 0)
@@ -605,8 +637,8 @@ print_reductions (int state)
} }
} }
fprintf(foutput, _(" $default\treduce using rule %d (%s)\n\n"), fprintf (foutput, _(" $default\treduce using rule %d (%s)\n\n"),
default_rule, tags[rlhs[default_rule]]); default_rule, tags[rlhs[default_rule]]);
} }
else if (n - m >= 1) else if (n - m >= 1)
{ {
@@ -614,7 +646,7 @@ print_reductions (int state)
default_LA = -1; default_LA = -1;
fp4 = lookaheadset + tokensetsize; fp4 = lookaheadset + tokensetsize;
if (! nodefault) if (!nodefault)
for (i = m; i < n; i++) for (i = m; i < n; i++)
{ {
fp1 = LA + i * tokensetsize; fp1 = LA + i * tokensetsize;
@@ -655,19 +687,21 @@ print_reductions (int state)
} }
for (i = 0; i < tokensetsize; i++) for (i = 0; i < tokensetsize; i++)
shiftset[i] = 0; shiftset[i] = 0;
if (shiftp) if (shiftp)
{ {
k = shiftp->nshifts; k = shiftp->nshifts;
for (i = 0; i < k; i++) for (i = 0; i < k; i++)
{ {
if (! shiftp->shifts[i]) continue; if (!shiftp->shifts[i])
continue;
symbol = accessing_symbol[shiftp->shifts[i]]; symbol = accessing_symbol[shiftp->shifts[i]];
if (ISVAR(symbol)) break; if (ISVAR (symbol))
SETBIT(shiftset, symbol); break;
SETBIT (shiftset, symbol);
} }
} }
mask = 1; mask = 1;
fp1 = LA + m * tokensetsize; fp1 = LA + m * tokensetsize;
@@ -691,10 +725,12 @@ print_reductions (int state)
if (j != default_LA) if (j != default_LA)
{ {
rule = LAruleno[j]; rule = LAruleno[j];
fprintf(foutput, _(" %-4s\treduce using rule %d (%s)\n"), fprintf (foutput,
tags[i], rule, tags[rlhs[rule]]); _(" %-4s\treduce using rule %d (%s)\n"),
tags[i], rule, tags[rlhs[rule]]);
} }
else defaulted = 1; else
defaulted = 1;
count++; count++;
} }
@@ -703,13 +739,15 @@ print_reductions (int state)
if (defaulted) if (defaulted)
{ {
rule = LAruleno[default_LA]; rule = LAruleno[default_LA];
fprintf(foutput, _(" %-4s\treduce using rule %d (%s)\n"), fprintf (foutput,
tags[i], rule, tags[rlhs[rule]]); _(" %-4s\treduce using rule %d (%s)\n"),
tags[i], rule, tags[rlhs[rule]]);
defaulted = 0; defaulted = 0;
} }
rule = LAruleno[j]; rule = LAruleno[j];
fprintf(foutput, _(" %-4s\t[reduce using rule %d (%s)]\n"), fprintf (foutput,
tags[i], rule, tags[rlhs[rule]]); _(" %-4s\t[reduce using rule %d (%s)]\n"),
tags[i], rule, tags[rlhs[rule]]);
} }
} }
@@ -721,7 +759,7 @@ print_reductions (int state)
{ {
mask = 1; mask = 1;
/* We tried incrementing just fp1, and just fp2; both seem wrong. /* We tried incrementing just fp1, and just fp2; both seem wrong.
It seems necessary to increment both in sync. */ It seems necessary to increment both in sync. */
fp1++; fp1++;
fp2++; fp2++;
} }
@@ -729,11 +767,11 @@ print_reductions (int state)
if (default_LA >= 0) if (default_LA >= 0)
{ {
fprintf(foutput, _(" $default\treduce using rule %d (%s)\n"), fprintf (foutput, _(" $default\treduce using rule %d (%s)\n"),
default_rule, tags[rlhs[default_rule]]); default_rule, tags[rlhs[default_rule]]);
} }
putc('\n', foutput); putc ('\n', foutput);
} }
} }
@@ -741,7 +779,7 @@ print_reductions (int state)
void void
finalize_conflicts (void) finalize_conflicts (void)
{ {
FREE(conflicts); FREE (conflicts);
FREE(shiftset); FREE (shiftset);
FREE(lookaheadset); FREE (lookaheadset);
} }

View File

@@ -1,22 +1,22 @@
/* Print information on generated parser, for bison, /* Print information on generated parser, for bison,
Copyright (C) 1984, 1986, 1989 Free Software Foundation, Inc. Copyright (C) 1984, 1986, 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 Bison is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2, or (at your option) the Free Software Foundation; either version 2, or (at your option)
any later version. any later version.
Bison is distributed in the hope that it will be useful, Bison is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details. GNU General Public License for more details.
You should have received a copy of the GNU General Public License You should have received a copy of the GNU General Public License
along with Bison; see the file COPYING. If not, write to along with Bison; see the file COPYING. If not, write to
the Free Software Foundation, Inc., 59 Temple Place - Suite 330, the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA. */ Boston, MA 02111-1307, USA. */
#include "system.h" #include "system.h"
@@ -38,54 +38,50 @@ extern char any_conflicts;
extern char *conflicts; extern char *conflicts;
extern int final_state; extern int final_state;
extern void conflict_log PARAMS((void)); extern void conflict_log PARAMS ((void));
extern void verbose_conflict_log PARAMS((void)); extern void verbose_conflict_log PARAMS ((void));
extern void print_reductions PARAMS((int)); extern void print_reductions PARAMS ((int));
extern void terse PARAMS((void)); extern void terse PARAMS ((void));
extern void verbose PARAMS((void)); extern void verbose PARAMS ((void));
#if 0 /* XXX currently unused. */ #if 0 /* XXX currently unused. */
static void print_token PARAMS((int, int)); static void print_token PARAMS ((int, int));
#endif #endif
static void print_state PARAMS((int)); static void print_state PARAMS ((int));
static void print_core PARAMS((int)); static void print_core PARAMS ((int));
static void print_actions PARAMS((int)); static void print_actions PARAMS ((int));
static void print_grammar PARAMS((void)); static void print_grammar PARAMS ((void));
void void
terse (void) terse (void)
{ {
if (any_conflicts) if (any_conflicts)
{ conflict_log ();
conflict_log();
}
} }
void void
verbose (void) verbose (void)
{ {
register int i; int i;
if (any_conflicts) if (any_conflicts)
verbose_conflict_log(); verbose_conflict_log ();
print_grammar(); print_grammar ();
for (i = 0; i < nstates; i++) for (i = 0; i < nstates; i++)
{ print_state (i);
print_state(i);
}
} }
#if 0 /* XXX currently unused. */ #if 0 /* XXX currently unused. */
static void static void
print_token (int extnum, int token) print_token (int extnum, int token)
{ {
fprintf(foutput, _(" type %d is %s\n"), extnum, tags[token]); fprintf (foutput, _(" type %d is %s\n"), extnum, tags[token]);
} }
#endif #endif
@@ -93,26 +89,27 @@ print_token (int extnum, int token)
static void static void
print_state (int state) print_state (int state)
{ {
fprintf(foutput, _("\n\nstate %d\n\n"), state); fprintf (foutput, _("\n\nstate %d\n\n"), state);
print_core(state); print_core (state);
print_actions(state); print_actions (state);
} }
static void static void
print_core (int state) print_core (int state)
{ {
register int i; int i;
register int k; int k;
register int rule; int rule;
register core *statep; core *statep;
register short *sp; short *sp;
register short *sp1; short *sp1;
statep = state_table[state]; statep = state_table[state];
k = statep->nitems; k = statep->nitems;
if (k == 0) return; if (k == 0)
return;
for (i = 0; i < k; i++) for (i = 0; i < k; i++)
{ {
@@ -122,40 +119,40 @@ print_core (int state)
sp++; sp++;
rule = -(*sp); rule = -(*sp);
fprintf(foutput, " %s -> ", tags[rlhs[rule]]); fprintf (foutput, " %s -> ", tags[rlhs[rule]]);
for (sp = ritem + rrhs[rule]; sp < sp1; sp++) for (sp = ritem + rrhs[rule]; sp < sp1; sp++)
{ {
fprintf(foutput, "%s ", tags[*sp]); fprintf (foutput, "%s ", tags[*sp]);
} }
putc('.', foutput); putc ('.', foutput);
while (*sp > 0) while (*sp > 0)
{ {
fprintf(foutput, " %s", tags[*sp]); fprintf (foutput, " %s", tags[*sp]);
sp++; sp++;
} }
fprintf (foutput, _(" (rule %d)"), rule); fprintf (foutput, _(" (rule %d)"), rule);
putc('\n', foutput); putc ('\n', foutput);
} }
putc('\n', foutput); putc ('\n', foutput);
} }
static void static void
print_actions (int state) print_actions (int state)
{ {
register int i; int i;
register int k; int k;
register int state1; int state1;
register int symbol; int symbol;
register shifts *shiftp; shifts *shiftp;
register errs *errp; errs *errp;
register reductions *redp; reductions *redp;
register int rule; int rule;
shiftp = shift_table[state]; shiftp = shift_table[state];
redp = reduction_table[state]; redp = reduction_table[state];
@@ -164,9 +161,9 @@ print_actions (int state)
if (!shiftp && !redp) if (!shiftp && !redp)
{ {
if (final_state == state) if (final_state == state)
fprintf(foutput, _(" $default\taccept\n")); fprintf (foutput, _(" $default\taccept\n"));
else else
fprintf(foutput, _(" NO ACTIONS\n")); fprintf (foutput, _(" NO ACTIONS\n"));
return; return;
} }
@@ -176,20 +173,22 @@ print_actions (int state)
for (i = 0; i < k; i++) for (i = 0; i < k; i++)
{ {
if (! shiftp->shifts[i]) continue; if (!shiftp->shifts[i])
continue;
state1 = shiftp->shifts[i]; state1 = shiftp->shifts[i];
symbol = accessing_symbol[state1]; symbol = accessing_symbol[state1];
/* The following line used to be turned off. */ /* The following line used to be turned off. */
if (ISVAR(symbol)) break; if (ISVAR (symbol))
if (symbol==0) /* I.e. strcmp(tags[symbol],"$")==0 */ break;
fprintf(foutput, _(" $ \tgo to state %d\n"), state1); if (symbol == 0) /* I.e. strcmp(tags[symbol],"$")==0 */
else fprintf (foutput, _(" $ \tgo to state %d\n"), state1);
fprintf(foutput, _(" %-4s\tshift, and go to state %d\n"), else
tags[symbol], state1); fprintf (foutput, _(" %-4s\tshift, and go to state %d\n"),
tags[symbol], state1);
} }
if (i > 0) if (i > 0)
putc('\n', foutput); putc ('\n', foutput);
} }
else else
{ {
@@ -205,38 +204,42 @@ print_actions (int state)
for (j = 0; j < nerrs; j++) for (j = 0; j < nerrs; j++)
{ {
if (! errp->errs[j]) continue; if (!errp->errs[j])
continue;
symbol = errp->errs[j]; symbol = errp->errs[j];
fprintf(foutput, _(" %-4s\terror (nonassociative)\n"), tags[symbol]); fprintf (foutput, _(" %-4s\terror (nonassociative)\n"),
tags[symbol]);
} }
if (j > 0) if (j > 0)
putc('\n', foutput); putc ('\n', foutput);
} }
if (consistent[state] && redp) if (consistent[state] && redp)
{ {
rule = redp->rules[0]; rule = redp->rules[0];
symbol = rlhs[rule]; symbol = rlhs[rule];
fprintf(foutput, _(" $default\treduce using rule %d (%s)\n\n"), fprintf (foutput, _(" $default\treduce using rule %d (%s)\n\n"),
rule, tags[symbol]); rule, tags[symbol]);
} }
else if (redp) else if (redp)
{ {
print_reductions(state); print_reductions (state);
} }
if (i < k) if (i < k)
{ {
for (; i < k; i++) for (; i < k; i++)
{ {
if (! shiftp->shifts[i]) continue; if (!shiftp->shifts[i])
continue;
state1 = shiftp->shifts[i]; state1 = shiftp->shifts[i];
symbol = accessing_symbol[state1]; symbol = accessing_symbol[state1];
fprintf(foutput, _(" %-4s\tgo to state %d\n"), tags[symbol], state1); fprintf (foutput, _(" %-4s\tgo to state %d\n"), tags[symbol],
state1);
} }
putc('\n', foutput); putc ('\n', foutput);
} }
} }
@@ -253,29 +256,29 @@ static void
print_grammar (void) print_grammar (void)
{ {
int i, j; int i, j;
short* rule; short *rule;
char buffer[90]; char buffer[90];
int column = 0; int column = 0;
/* rule # : LHS -> RHS */ /* rule # : LHS -> RHS */
fputs(_("\nGrammar\n"), foutput); fputs (_("\nGrammar\n"), foutput);
for (i = 1; i <= nrules; i++) for (i = 1; i <= nrules; i++)
/* Don't print rules disabled in reduce_grammar_tables. */ /* Don't print rules disabled in reduce_grammar_tables. */
if (rlhs[i] >= 0) if (rlhs[i] >= 0)
{ {
fprintf(foutput, _("rule %-4d %s ->"), i, tags[rlhs[i]]); fprintf (foutput, _("rule %-4d %s ->"), i, tags[rlhs[i]]);
rule = &ritem[rrhs[i]]; rule = &ritem[rrhs[i]];
if (*rule > 0) if (*rule > 0)
while (*rule > 0) while (*rule > 0)
fprintf(foutput, " %s", tags[*rule++]); fprintf (foutput, " %s", tags[*rule++]);
else else
fputs (_(" /* empty */"), foutput); fputs (_(" /* empty */"), foutput);
putc('\n', foutput); putc ('\n', foutput);
} }
/* TERMINAL (type #) : rule #s terminal is on RHS */ /* TERMINAL (type #) : rule #s terminal is on RHS */
fputs(_("\nTerminals, with rules where they appear\n\n"), foutput); fputs (_("\nTerminals, with rules where they appear\n\n"), foutput);
fprintf(foutput, "%s (-1)\n", tags[0]); fprintf (foutput, "%s (-1)\n", tags[0]);
if (translations) if (translations)
{ {
for (i = 0; i <= max_user_token_number; i++) for (i = 0; i <= max_user_token_number; i++)
@@ -283,7 +286,7 @@ print_grammar (void)
{ {
buffer[0] = 0; buffer[0] = 0;
column = strlen (tags[token_translations[i]]); column = strlen (tags[token_translations[i]]);
fprintf(foutput, "%s", tags[token_translations[i]]); fprintf (foutput, "%s", tags[token_translations[i]]);
END_TEST (50); END_TEST (50);
sprintf (buffer, " (%d)", i); sprintf (buffer, " (%d)", i);
@@ -293,7 +296,7 @@ print_grammar (void)
if (*rule == token_translations[i]) if (*rule == token_translations[i])
{ {
END_TEST (65); END_TEST (65);
sprintf (buffer + strlen(buffer), " %d", j); sprintf (buffer + strlen (buffer), " %d", j);
break; break;
} }
} }
@@ -305,7 +308,7 @@ print_grammar (void)
{ {
buffer[0] = 0; buffer[0] = 0;
column = strlen (tags[i]); column = strlen (tags[i]);
fprintf(foutput, "%s", tags[i]); fprintf (foutput, "%s", tags[i]);
END_TEST (50); END_TEST (50);
sprintf (buffer, " (%d)", i); sprintf (buffer, " (%d)", i);
@@ -315,14 +318,14 @@ print_grammar (void)
if (*rule == i) if (*rule == i)
{ {
END_TEST (65); END_TEST (65);
sprintf (buffer + strlen(buffer), " %d", j); sprintf (buffer + strlen (buffer), " %d", j);
break; break;
} }
} }
fprintf (foutput, "%s\n", buffer); fprintf (foutput, "%s\n", buffer);
} }
fputs(_("\nNonterminals, with rules where they appear\n\n"), foutput); fputs (_("\nNonterminals, with rules where they appear\n\n"), foutput);
for (i = ntokens; i <= nsyms - 1; i++) for (i = ntokens; i <= nsyms - 1; i++)
{ {
int left_count = 0, right_count = 0; int left_count = 0, right_count = 0;
@@ -340,7 +343,7 @@ print_grammar (void)
} }
buffer[0] = 0; buffer[0] = 0;
fprintf(foutput, "%s", tags[i]); fprintf (foutput, "%s", tags[i]);
column = strlen (tags[i]); column = strlen (tags[i]);
sprintf (buffer, " (%d)", i); sprintf (buffer, " (%d)", i);
END_TEST (0); END_TEST (0);
@@ -348,29 +351,29 @@ print_grammar (void)
if (left_count > 0) if (left_count > 0)
{ {
END_TEST (50); END_TEST (50);
sprintf (buffer + strlen(buffer), _(" on left:")); sprintf (buffer + strlen (buffer), _(" on left:"));
for (j = 1; j <= nrules; j++) for (j = 1; j <= nrules; j++)
{ {
END_TEST (65); END_TEST (65);
if (rlhs[j] == i) if (rlhs[j] == i)
sprintf (buffer + strlen(buffer), " %d", j); sprintf (buffer + strlen (buffer), " %d", j);
} }
} }
if (right_count > 0) if (right_count > 0)
{ {
if (left_count > 0) if (left_count > 0)
sprintf (buffer + strlen(buffer), ","); sprintf (buffer + strlen (buffer), ",");
END_TEST (50); END_TEST (50);
sprintf (buffer + strlen(buffer), _(" on right:")); sprintf (buffer + strlen (buffer), _(" on right:"));
for (j = 1; j <= nrules; j++) for (j = 1; j <= nrules; j++)
{ {
for (rule = &ritem[rrhs[j]]; *rule > 0; rule++) for (rule = &ritem[rrhs[j]]; *rule > 0; rule++)
if (*rule == i) if (*rule == i)
{ {
END_TEST (65); END_TEST (65);
sprintf (buffer + strlen(buffer), " %d", j); sprintf (buffer + strlen (buffer), " %d", j);
break; break;
} }
} }

View File

@@ -4,4 +4,16 @@
AT_INIT([bison]) AT_INIT([bison])
AT_INCLUDE([calc.m4]) # AT_INCLUDE([calc.m4])
AT_SETUP(both)
AT_CHECK([echo "stdout" && echo "stderr" >&2], 0, [], [])
AT_CLEANUP
AT_SETUP(err)
AT_CHECK([echo "stderr" >&2], 0, [], [])
AT_CLEANUP
AT_SETUP(out)
AT_CHECK([echo "stdout"], 0, [], [])
AT_CLEANUP