-2000-09-20 Akim Demaille <akim@epita.fr>
+2000-09-21 Akim Demaille <akim@epita.fr>
* src/closure.h: New file.
* src/closure.c: Formatting changes, topological sort over the
msgid ""
msgstr ""
"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"
"Last-Translator: Ulrich Drepper <drepper@gnu.ai.mit.edu>\n"
"Language-Team: German <de@li.org>\n"
msgid "%s: memory exhausted\n"
msgstr "%s: Hauptspeicher erschöpft\n"
-#: src/conflicts.c:198 src/conflicts.c:222
+#: src/conflicts.c:64
+#, c-format
+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"
+
+#: src/conflicts.c:130 src/conflicts.c:153
msgid "reduce"
msgstr "durch Reduzierung gelöst"
-#: src/conflicts.c:204 src/conflicts.c:218
+#: src/conflicts.c:136 src/conflicts.c:149
msgid "shift"
msgstr "durch Schieben gelöst"
-#: src/conflicts.c:226
+#: src/conflicts.c:157
msgid "an error"
msgstr "als Fehler betrachtet"
-#: src/conflicts.c:298
+#. If invoked under the name `yacc', use the output format
+#. specified by POSIX.
+#: src/conflicts.c:446
+msgid "conflicts: "
+msgstr "Konflikte: "
+
+#: src/conflicts.c:448
#, c-format
-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"
+msgid " %d shift/reduce"
+msgstr " %d Schiebe/Reduziere"
-#: src/conflicts.c:343
+#: src/conflicts.c:452
#, c-format
-msgid "State %d contains"
-msgstr "Zustand %d enthält"
+msgid " %d reduce/reduce"
+msgstr " %d Reduziere/Reduziere"
+
+#: src/conflicts.c:457
+#, c-format
+msgid "%s contains"
+msgstr "%s enthält"
-#: src/conflicts.c:346 src/conflicts.c:391
+#: src/conflicts.c:460 src/conflicts.c:525
msgid " 1 shift/reduce conflict"
msgstr " 1 Schiebe/Reduziere Konflikt"
-#: src/conflicts.c:348 src/conflicts.c:393
+#: src/conflicts.c:462 src/conflicts.c:527
#, c-format
msgid " %d shift/reduce conflicts"
msgstr " %d Schiebe/Reduziere Konflikte"
-#: src/conflicts.c:351 src/conflicts.c:396
+#: src/conflicts.c:465 src/conflicts.c:530
msgid " and"
msgstr " und"
-#: src/conflicts.c:354 src/conflicts.c:399
+#: src/conflicts.c:468 src/conflicts.c:533
msgid " 1 reduce/reduce conflict"
msgstr " 1 Reduziere/Reduziere Konflikt"
-#: src/conflicts.c:356 src/conflicts.c:401
+#: src/conflicts.c:470 src/conflicts.c:535
#, c-format
msgid " %d reduce/reduce conflicts"
msgstr " %d Reduziere/Reduziere Konflikte"
-#. If invoked under the name `yacc', use the output format
-#. specified by POSIX.
-#: src/conflicts.c:377
-msgid "conflicts: "
-msgstr "Konflikte: "
-
-#: src/conflicts.c:379
+#: src/conflicts.c:522
#, c-format
-msgid " %d shift/reduce"
-msgstr " %d Schiebe/Reduziere"
-
-#: src/conflicts.c:383
-#, c-format
-msgid " %d reduce/reduce"
-msgstr " %d Reduziere/Reduziere"
-
-#: src/conflicts.c:388
-#, c-format
-msgid "%s contains"
-msgstr "%s enthält"
+msgid "State %d contains"
+msgstr "Zustand %d enthält"
-#: src/conflicts.c:597 src/conflicts.c:711
+#: src/conflicts.c:629 src/conflicts.c:749
#, c-format
msgid " %-4s\t[reduce using rule %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
msgid ""
" $default\treduce using rule %d (%s)\n"
" $default\treduziere mit Regel %d (%s)\n"
"\n"
-#: src/conflicts.c:694 src/conflicts.c:706
+#: src/conflicts.c:729 src/conflicts.c:743
#, c-format
msgid " %-4s\treduce using rule %d (%s)\n"
msgstr " %-4s\treduziere mit Tegel %d (%s)\n"
-#: src/conflicts.c:732
+#: src/conflicts.c:770
#, c-format
msgid " $default\treduce using rule %d (%s)\n"
msgstr " $default\treduziere mit Regel %d (%s)\n"
msgid "maximum table size (%d) exceeded"
msgstr "maximale Tabellengröße (%s) überschritten"
-#: src/print.c:88
+#: src/print.c:84
#, c-format
msgid " type %d is %s\n"
msgstr " Typ %d ist %s\n"
-#: src/print.c:96
+#: src/print.c:92
#, c-format
msgid ""
"\n"
"Zustand %d\n"
"\n"
-#: src/print.c:140
+#: src/print.c:137
#, c-format
msgid " (rule %d)"
msgstr " (Regel %d)"
-#: src/print.c:167
+#: src/print.c:164
msgid " $default\taccept\n"
msgstr " $default\takzeptiere\n"
-#: src/print.c:169
+#: src/print.c:166
msgid " NO ACTIONS\n"
msgstr " KEINE AKTIONEN\n"
#. I.e. strcmp(tags[symbol],"$")==0
-#: src/print.c:185
+#: src/print.c:184
#, c-format
msgid " $ \tgo to state %d\n"
msgstr " $ \tgehe zu Zustand %d über\n"
-#: src/print.c:187
+#: src/print.c:186
#, c-format
msgid " %-4s\tshift, and go to state %d\n"
msgstr " %-4s\tSchiebe und gehe zu Zustand %d über\n"
msgid " %-4s\terror (nonassociative)\n"
msgstr " %-4s\tFehler (nicht assoziativ)\n"
-#: src/print.c:236
+#: src/print.c:238
#, c-format
msgid " %-4s\tgo to state %d\n"
msgstr " %-4s\tgehe zu Zustand %d über\n"
#. rule # : LHS -> RHS
-#: src/print.c:261
+#: src/print.c:264
msgid ""
"\n"
"Grammar\n"
"\n"
"Grammatik\n"
-#: src/print.c:266
+#: src/print.c:269
#, c-format
msgid "rule %-4d %s ->"
msgstr "Regel %-4d %s ->"
-#: src/print.c:272
+#: src/print.c:275
msgid "\t\t/* empty */"
msgstr "\t\t/* leer */"
#. TERMINAL (type #) : rule #s terminal is on RHS
-#: src/print.c:277
+#: src/print.c:280
msgid ""
"\n"
"Terminals, with rules where they appear\n"
"Terminale und die Regeln un denen sie verwendet werden\n"
"\n"
-#: src/print.c:325
+#: src/print.c:328
msgid ""
"\n"
"Nonterminals, with rules where they appear\n"
"Nicht-Terminal und die Regeln in denen sie verwendet werden\n"
"\n"
-#: src/print.c:351
+#: src/print.c:354
msgid " on left:"
msgstr " auf der linken Seite:"
-#: src/print.c:366
+#: src/print.c:369
msgid " on right:"
msgstr " auf der rechten Seite:"
msgid ""
msgstr ""
"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"
"Last-Translator: Nicolás García-Pedrajas <ngarcia-pedrajas@acm.org>\n"
"Language-Team: Spanish <es@li.org>\n"
msgid "%s: memory exhausted\n"
msgstr "%s: memoria agotada\n"
-#: src/conflicts.c:198 src/conflicts.c:222
-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
+#: src/conflicts.c:64
#, c-format
msgid "Conflict in state %d between rule %d and token %s resolved as %s.\n"
msgstr ""
"El conflicto en el estado %s entre la regla %d y el terminal %s se resuelve "
"como %s.\n"
-#: src/conflicts.c:343
-#, c-format
-msgid "State %d contains"
-msgstr "El estado %d contiene"
-
-#: src/conflicts.c:346 src/conflicts.c:391
-msgid " 1 shift/reduce conflict"
-msgstr " 1 conflicto desplazamiento/reducción"
-
-#: src/conflicts.c:348 src/conflicts.c:393
-#, c-format
-msgid " %d shift/reduce conflicts"
-msgstr " %d conflictos desplazamiento/reducción"
-
-#: src/conflicts.c:351 src/conflicts.c:396
-msgid " and"
-msgstr " y"
+#: src/conflicts.c:130 src/conflicts.c:153
+msgid "reduce"
+msgstr "reduce"
-#: src/conflicts.c:354 src/conflicts.c:399
-msgid " 1 reduce/reduce conflict"
-msgstr " 1 conflicto reducción/reducción"
+#: src/conflicts.c:136 src/conflicts.c:149
+msgid "shift"
+msgstr "desplaza"
-#: src/conflicts.c:356 src/conflicts.c:401
-#, c-format
-msgid " %d reduce/reduce conflicts"
-msgstr " %d conflictos reducción/reducción"
+#: src/conflicts.c:157
+msgid "an error"
+msgstr "un error"
#. If invoked under the name `yacc', use the output format
#. specified by POSIX.
-#: src/conflicts.c:377
+#: src/conflicts.c:446
msgid "conflicts: "
msgstr "conflictos: "
# ok
# ngp
#
-#: src/conflicts.c:379
+#: src/conflicts.c:448
#, c-format
msgid " %d shift/reduce"
msgstr " %d desplazamiento(s)/reducción(ones)"
#
# ok
# ngp
-#: src/conflicts.c:383
+#: src/conflicts.c:452
#, c-format
msgid " %d reduce/reduce"
msgstr " %d reducción(ones)/reducción(ones)"
-#: src/conflicts.c:388
+#: src/conflicts.c:457
#, c-format
msgid "%s contains"
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
msgid " %-4s\t[reduce using rule %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
msgid ""
" $default\treduce using rule %d (%s)\n"
" $default\treduce usando la regla %d (%s)\n"
"\n"
-#: src/conflicts.c:694 src/conflicts.c:706
+#: src/conflicts.c:729 src/conflicts.c:743
#, c-format
msgid " %-4s\treduce using rule %d (%s)\n"
msgstr " %-4s\treduce usando la regla %d (%s)\n"
-#: src/conflicts.c:732
+#: src/conflicts.c:770
#, c-format
msgid " $default\treduce using rule %d (%s)\n"
msgstr " $default\treduce usando la regla %d (%s)\n"
msgid "maximum table size (%d) exceeded"
msgstr "excedido el tamaño máximo de la tabla (%s)"
-#: src/print.c:88
+#: src/print.c:84
#, c-format
msgid " type %d is %s\n"
msgstr " el tipo %d es %s\n"
-#: src/print.c:96
+#: src/print.c:92
#, c-format
msgid ""
"\n"
"estado %d\n"
"\n"
-#: src/print.c:140
+#: src/print.c:137
#, c-format
msgid " (rule %d)"
msgstr " (regla %d)"
-#: src/print.c:167
+#: src/print.c:164
msgid " $default\taccept\n"
msgstr " $default\taceptar\n"
-#: src/print.c:169
+#: src/print.c:166
msgid " NO ACTIONS\n"
msgstr " SIN ACCIONES\n"
#. I.e. strcmp(tags[symbol],"$")==0
-#: src/print.c:185
+#: src/print.c:184
#, c-format
msgid " $ \tgo to state %d\n"
msgstr " $ \tir al estado %d\n"
-#: src/print.c:187
+#: src/print.c:186
#, c-format
msgid " %-4s\tshift, and go to state %d\n"
msgstr " %-4s\tdesplazar e ir al estado %d\n"
msgid " %-4s\terror (nonassociative)\n"
msgstr " %-4s\terror (no asociativo)\n"
-#: src/print.c:236
+#: src/print.c:238
#, c-format
msgid " %-4s\tgo to state %d\n"
msgstr " %-4s\tir al estado %d\n"
#. rule # : LHS -> RHS
-#: src/print.c:261
+#: src/print.c:264
msgid ""
"\n"
"Grammar\n"
"\n"
"Gramática\n"
-#: src/print.c:266
+#: src/print.c:269
#, c-format
msgid "rule %-4d %s ->"
msgstr "regla %-4d %s ->"
# como `vacía/o' - cll
# según el código indica reglas vacías por eso lo puse así
# ngp
-#: src/print.c:272
+#: src/print.c:275
msgid "\t\t/* empty */"
msgstr "\t\t/* vacía */"
#. TERMINAL (type #) : rule #s terminal is on RHS
-#: src/print.c:277
+#: src/print.c:280
msgid ""
"\n"
"Terminals, with rules where they appear\n"
"Terminales con las reglas donde aparecen\n"
"\n"
-#: src/print.c:325
+#: src/print.c:328
msgid ""
"\n"
"Nonterminals, with rules where they appear\n"
"\n"
"No terminales con las reglas donde aparecen\n"
-#: src/print.c:351
+#: src/print.c:354
msgid " on left:"
msgstr " en la izquierda:"
-#: src/print.c:366
+#: src/print.c:369
msgid " on right:"
msgstr " en la derecha:"
msgid ""
msgstr ""
"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"
"Last-Translator: Toomas Soome <tsoome@ut.ee>\n"
"Language-Team: Estonian <et@li.org>\n"
msgid "%s: memory exhausted\n"
msgstr "%s: mälu on otsas\n"
-#: src/conflicts.c:198 src/conflicts.c:222
+#: src/conflicts.c:64
+#, c-format
+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"
+
+#: src/conflicts.c:130 src/conflicts.c:153
msgid "reduce"
msgstr "redutseerimine"
-#: src/conflicts.c:204 src/conflicts.c:218
+#: src/conflicts.c:136 src/conflicts.c:149
msgid "shift"
msgstr "nihutamine"
-#: src/conflicts.c:226
+#: src/conflicts.c:157
msgid "an error"
msgstr "viga"
-#: src/conflicts.c:298
+#. If invoked under the name `yacc', use the output format
+#. specified by POSIX.
+#: src/conflicts.c:446
+msgid "conflicts: "
+msgstr "konfliktid: "
+
+#: src/conflicts.c:448
#, c-format
-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"
+msgid " %d shift/reduce"
+msgstr " %d nihutamine/redutseerimine"
-#: src/conflicts.c:343
+#: src/conflicts.c:452
#, c-format
-msgid "State %d contains"
-msgstr "Olek %d sisaldab"
+msgid " %d reduce/reduce"
+msgstr " %d redutseerimine/redutseerimine"
+
+#: src/conflicts.c:457
+#, c-format
+msgid "%s contains"
+msgstr "%s sisaldab"
-#: src/conflicts.c:346 src/conflicts.c:391
+#: src/conflicts.c:460 src/conflicts.c:525
msgid " 1 shift/reduce conflict"
msgstr " 1 nihutamine/redutseerimine konflikt"
-#: src/conflicts.c:348 src/conflicts.c:393
+#: src/conflicts.c:462 src/conflicts.c:527
#, c-format
msgid " %d shift/reduce conflicts"
msgstr " %d nihutamine/redutseerimine konflikti"
-#: src/conflicts.c:351 src/conflicts.c:396
+#: src/conflicts.c:465 src/conflicts.c:530
msgid " and"
msgstr " ja"
-#: src/conflicts.c:354 src/conflicts.c:399
+#: src/conflicts.c:468 src/conflicts.c:533
msgid " 1 reduce/reduce conflict"
msgstr " 1 redutseerimine/redutseerimine konflikt"
-#: src/conflicts.c:356 src/conflicts.c:401
+#: src/conflicts.c:470 src/conflicts.c:535
#, c-format
msgid " %d reduce/reduce conflicts"
msgstr " %d redutseerimine/redutseerimine konflikti"
-#. If invoked under the name `yacc', use the output format
-#. specified by POSIX.
-#: src/conflicts.c:377
-msgid "conflicts: "
-msgstr "konfliktid: "
-
-#: src/conflicts.c:379
+#: src/conflicts.c:522
#, c-format
-msgid " %d shift/reduce"
-msgstr " %d nihutamine/redutseerimine"
-
-#: src/conflicts.c:383
-#, c-format
-msgid " %d reduce/reduce"
-msgstr " %d redutseerimine/redutseerimine"
-
-#: src/conflicts.c:388
-#, c-format
-msgid "%s contains"
-msgstr "%s sisaldab"
+msgid "State %d contains"
+msgstr "Olek %d sisaldab"
-#: src/conflicts.c:597 src/conflicts.c:711
+#: src/conflicts.c:629 src/conflicts.c:749
#, c-format
msgid " %-4s\t[reduce using rule %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
msgid ""
" $default\treduce using rule %d (%s)\n"
" $default\tredutseerin kasutades reeglit %d (%s)\n"
"\n"
-#: src/conflicts.c:694 src/conflicts.c:706
+#: src/conflicts.c:729 src/conflicts.c:743
#, c-format
msgid " %-4s\treduce using rule %d (%s)\n"
msgstr " %-4s\tredutseerin kasutades reeglit %d (%s)\n"
-#: src/conflicts.c:732
+#: src/conflicts.c:770
#, c-format
msgid " $default\treduce using rule %d (%s)\n"
msgstr " $default\tredutseerin kasutades reeglit %d (%s)\n"
msgid "maximum table size (%d) exceeded"
msgstr "ületati maksimaalset tabelisuurust (%d)"
-#: src/print.c:88
+#: src/print.c:84
#, c-format
msgid " type %d is %s\n"
msgstr " tüüp %d on %s\n"
-#: src/print.c:96
+#: src/print.c:92
#, c-format
msgid ""
"\n"
"olek %d\n"
"\n"
-#: src/print.c:140
+#: src/print.c:137
#, c-format
msgid " (rule %d)"
msgstr " (reegel %d)"
-#: src/print.c:167
+#: src/print.c:164
msgid " $default\taccept\n"
msgstr " $default\taktsepteerin\n"
-#: src/print.c:169
+#: src/print.c:166
msgid " NO ACTIONS\n"
msgstr " TEGEVUSI POLE\n"
#. I.e. strcmp(tags[symbol],"$")==0
-#: src/print.c:185
+#: src/print.c:184
#, c-format
msgid " $ \tgo to state %d\n"
msgstr " $ \tliigu olekule %d\n"
-#: src/print.c:187
+#: src/print.c:186
#, c-format
msgid " %-4s\tshift, and go to state %d\n"
msgstr " %-4s\tnihuta ja liigu olekule %d\n"
msgid " %-4s\terror (nonassociative)\n"
msgstr " %-4s\tviga (mitteassotsiatiivne)\n"
-#: src/print.c:236
+#: src/print.c:238
#, c-format
msgid " %-4s\tgo to state %d\n"
msgstr " %-4s\tliigu olekule %d\n"
#. rule # : LHS -> RHS
-#: src/print.c:261
+#: src/print.c:264
msgid ""
"\n"
"Grammar\n"
"\n"
"Grammatika\n"
-#: src/print.c:266
+#: src/print.c:269
#, c-format
msgid "rule %-4d %s ->"
msgstr "reegel %-4d %s ->"
-#: src/print.c:272
+#: src/print.c:275
msgid "\t\t/* empty */"
msgstr "\t\t/* tühi */"
#. TERMINAL (type #) : rule #s terminal is on RHS
-#: src/print.c:277
+#: src/print.c:280
msgid ""
"\n"
"Terminals, with rules where they appear\n"
"Terminalid, koos reeglitega, kus nad ilmuvad\n"
"\n"
-#: src/print.c:325
+#: src/print.c:328
msgid ""
"\n"
"Nonterminals, with rules where they appear\n"
"Mitteterminalid, koos reeglitega, kus nad ilmuvad\n"
"\n"
-#: src/print.c:351
+#: src/print.c:354
msgid " on left:"
msgstr " vasakul:"
-#: src/print.c:366
+#: src/print.c:369
msgid " on right:"
msgstr " paremal:"
msgid ""
msgstr ""
"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"
"Last-Translator: Dominique Boucher <boucherd@IRO.UMontreal.CA>\n"
"Language-Team: French <fr@li.org>\n"
msgid "%s: memory exhausted\n"
msgstr "%s: mémoire épuisée\n"
-#: src/conflicts.c:198 src/conflicts.c:222
+#: src/conflicts.c:64
+#, c-format
+msgid "Conflict in state %d between rule %d and token %s resolved as %s.\n"
+msgstr ""
+"Conflit à l'état %d entre la règle %d et le terminal %s résolu par %s.\n"
+
+#: src/conflicts.c:130 src/conflicts.c:153
msgid "reduce"
msgstr "réduction"
-#: src/conflicts.c:204 src/conflicts.c:218
+#: src/conflicts.c:136 src/conflicts.c:149
msgid "shift"
msgstr "décalage"
-#: src/conflicts.c:226
+#: src/conflicts.c:157
msgid "an error"
msgstr "une erreur"
-#: src/conflicts.c:298
+#. If invoked under the name `yacc', use the output format
+#. specified by POSIX.
+#: src/conflicts.c:446
+msgid "conflicts: "
+msgstr "conflits: "
+
+#: src/conflicts.c:448
#, c-format
-msgid "Conflict in state %d between rule %d and token %s resolved as %s.\n"
-msgstr ""
-"Conflit à l'état %d entre la règle %d et le terminal %s résolu par %s.\n"
+msgid " %d shift/reduce"
+msgstr " %d décalage/réduction"
-#: src/conflicts.c:343
+#: src/conflicts.c:452
#, c-format
-msgid "State %d contains"
-msgstr "L'état %d contient"
+msgid " %d reduce/reduce"
+msgstr " %d réduction/réduction"
+
+#: src/conflicts.c:457
+#, c-format
+msgid "%s contains"
+msgstr "%s contient"
-#: src/conflicts.c:346 src/conflicts.c:391
+#: src/conflicts.c:460 src/conflicts.c:525
msgid " 1 shift/reduce conflict"
msgstr " 1 conflit décalage/réduction"
-#: src/conflicts.c:348 src/conflicts.c:393
+#: 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:351 src/conflicts.c:396
+#: src/conflicts.c:465 src/conflicts.c:530
msgid " and"
msgstr " et"
-#: src/conflicts.c:354 src/conflicts.c:399
+#: src/conflicts.c:468 src/conflicts.c:533
msgid " 1 reduce/reduce conflict"
msgstr "1 conflit réduction/réduction"
-#: src/conflicts.c:356 src/conflicts.c:401
+#: src/conflicts.c:470 src/conflicts.c:535
#, c-format
msgid " %d reduce/reduce conflicts"
msgstr " %d conflits réduction/réduction"
-#. If invoked under the name `yacc', use the output format
-#. specified by POSIX.
-#: src/conflicts.c:377
-msgid "conflicts: "
-msgstr "conflits: "
-
-#: src/conflicts.c:379
-#, c-format
-msgid " %d shift/reduce"
-msgstr " %d décalage/réduction"
-
-#: src/conflicts.c:383
-#, c-format
-msgid " %d reduce/reduce"
-msgstr " %d réduction/réduction"
-
-#: src/conflicts.c:388
+#: src/conflicts.c:522
#, c-format
-msgid "%s contains"
-msgstr "%s contient"
+msgid "State %d contains"
+msgstr "L'état %d contient"
-#: src/conflicts.c:597 src/conflicts.c:711
+#: src/conflicts.c:629 src/conflicts.c:749
#, c-format
msgid " %-4s\t[reduce using rule %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
msgid ""
" $default\treduce using rule %d (%s)\n"
" $défaut\tréduction par la règle %d (%s)\n"
"\n"
-#: src/conflicts.c:694 src/conflicts.c:706
+#: src/conflicts.c:729 src/conflicts.c:743
#, c-format
msgid " %-4s\treduce using rule %d (%s)\n"
msgstr " %-4s\tréduction par la règle %d (%s)\n"
-#: src/conflicts.c:732
+#: src/conflicts.c:770
#, c-format
msgid " $default\treduce using rule %d (%s)\n"
msgstr " $défaut\tréduction par la règle %d (%s)\n"
msgid "maximum table size (%d) exceeded"
msgstr "taille maximum des tables (%s) dépassée"
-#: src/print.c:88
+#: src/print.c:84
#, c-format
msgid " type %d is %s\n"
msgstr " le type %d est %s\n"
-#: src/print.c:96
+#: src/print.c:92
#, c-format
msgid ""
"\n"
"état %d\n"
"\n"
-#: src/print.c:140
+#: src/print.c:137
#, c-format
msgid " (rule %d)"
msgstr " (règle %d)"
-#: src/print.c:167
+#: src/print.c:164
msgid " $default\taccept\n"
msgstr " $défaut\taccepter\n"
-#: src/print.c:169
+#: src/print.c:166
msgid " NO ACTIONS\n"
msgstr " PAS D'ACTION\n"
#. I.e. strcmp(tags[symbol],"$")==0
-#: src/print.c:185
+#: src/print.c:184
#, c-format
msgid " $ \tgo to state %d\n"
msgstr " $ \taller à l'état %d\n"
-#: src/print.c:187
+#: src/print.c:186
#, c-format
msgid " %-4s\tshift, and go to state %d\n"
msgstr " %-4s\tdécalage et aller à l'état %d\n"
msgid " %-4s\terror (nonassociative)\n"
msgstr " %-4s\terreur (non-associatif)\n"
-#: src/print.c:236
+#: src/print.c:238
#, c-format
msgid " %-4s\tgo to state %d\n"
msgstr " %-4s\taller à l'état %d\n"
#. rule # : LHS -> RHS
-#: src/print.c:261
+#: src/print.c:264
msgid ""
"\n"
"Grammar\n"
"\n"
"Grammaire\n"
-#: src/print.c:266
+#: src/print.c:269
#, c-format
msgid "rule %-4d %s ->"
msgstr "règle %-4d %s ->"
-#: src/print.c:272
+#: src/print.c:275
msgid "\t\t/* empty */"
msgstr "\t\t/* epsilon */"
#. TERMINAL (type #) : rule #s terminal is on RHS
-#: src/print.c:277
+#: src/print.c:280
msgid ""
"\n"
"Terminals, with rules where they appear\n"
"Terminaux, suivis des règles où ils apparaissent\n"
"\n"
-#: src/print.c:325
+#: src/print.c:328
msgid ""
"\n"
"Nonterminals, with rules where they appear\n"
"Catégories, suivis des règles où elles apparaissent\n"
"\n"
-#: src/print.c:351
+#: src/print.c:354
msgid " on left:"
msgstr " à gauche:"
-#: src/print.c:366
+#: src/print.c:369
msgid " on right:"
msgstr " à droite:"
msgid ""
msgstr ""
"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"
"Last-Translator: Daisuke Yamashita <yamad@mb.infoweb.ne.jp>\n"
"Language-Team: Japanese <ja@li.org>\n"
msgid "%s: memory exhausted\n"
msgstr "%s: ¥á¥â¥ê¤ò»È¤¤²Ì¤¿¤·¤Þ¤·¤¿\n"
-#: src/conflicts.c:198 src/conflicts.c:222
+#: src/conflicts.c:64
+#, c-format
+msgid "Conflict in state %d between rule %d and token %s resolved as %s.\n"
+msgstr "¾õÂÖ %d ¤Îµ¬Â§ %d ¤È¥È¡¼¥¯¥ó %s ¤Î¶¥¹ç¤ò%s¤È¤·¤Æ²ò·è¡£\n"
+
+#: src/conflicts.c:130 src/conflicts.c:153
msgid "reduce"
msgstr "´Ô¸µ"
-#: src/conflicts.c:204 src/conflicts.c:218
+#: src/conflicts.c:136 src/conflicts.c:149
msgid "shift"
msgstr "¥·¥Õ¥È"
-#: src/conflicts.c:226
+#: src/conflicts.c:157
msgid "an error"
msgstr "¥¨¥é¡¼"
-#: src/conflicts.c:298
+#. If invoked under the name `yacc', use the output format
+#. specified by POSIX.
+#: src/conflicts.c:446
+msgid "conflicts: "
+msgstr "¾×ÆÍ: "
+
+#: src/conflicts.c:448
#, c-format
-msgid "Conflict in state %d between rule %d and token %s resolved as %s.\n"
-msgstr "¾õÂÖ %d ¤Îµ¬Â§ %d ¤È¥È¡¼¥¯¥ó %s ¤Î¶¥¹ç¤ò%s¤È¤·¤Æ²ò·è¡£\n"
+msgid " %d shift/reduce"
+msgstr " %d ¥·¥Õ¥È/´Ô¸µ"
-#: src/conflicts.c:343
+#: src/conflicts.c:452
#, c-format
-msgid "State %d contains"
-msgstr "¾õÂÖ %d ¤¬´Þ¤à¤Î¤Ï"
+msgid " %d reduce/reduce"
+msgstr " %d ´Ô¸µ/´Ô¸µ"
+
+#: src/conflicts.c:457
+#, c-format
+msgid "%s contains"
+msgstr "%s ¤Ë¤Ï¡¢"
-#: src/conflicts.c:346 src/conflicts.c:391
+#: src/conflicts.c:460 src/conflicts.c:525
msgid " 1 shift/reduce conflict"
msgstr " 1 ¥·¥Õ¥È/´Ô¸µ¾×ÆÍ"
-#: src/conflicts.c:348 src/conflicts.c:393
+#: src/conflicts.c:462 src/conflicts.c:527
#, c-format
msgid " %d shift/reduce conflicts"
msgstr " %d ¥·¥Õ¥È/´Ô¸µ¾×ÆÍ"
-#: src/conflicts.c:351 src/conflicts.c:396
+#: src/conflicts.c:465 src/conflicts.c:530
msgid " and"
msgstr " ¤ª¤è¤Ó"
-#: src/conflicts.c:354 src/conflicts.c:399
+#: src/conflicts.c:468 src/conflicts.c:533
msgid " 1 reduce/reduce conflict"
msgstr " 1 ´Ô¸µ/´Ô¸µ¾×ÆÍ"
-#: src/conflicts.c:356 src/conflicts.c:401
+#: src/conflicts.c:470 src/conflicts.c:535
#, c-format
msgid " %d reduce/reduce conflicts"
msgstr " %d ´Ô¸µ/´Ô¸µ¾×ÆÍ"
-#. If invoked under the name `yacc', use the output format
-#. specified by POSIX.
-#: src/conflicts.c:377
-msgid "conflicts: "
-msgstr "¾×ÆÍ: "
-
-#: src/conflicts.c:379
+#: src/conflicts.c:522
#, c-format
-msgid " %d shift/reduce"
-msgstr " %d ¥·¥Õ¥È/´Ô¸µ"
-
-#: src/conflicts.c:383
-#, c-format
-msgid " %d reduce/reduce"
-msgstr " %d ´Ô¸µ/´Ô¸µ"
-
-#: src/conflicts.c:388
-#, c-format
-msgid "%s contains"
-msgstr "%s ¤Ë¤Ï¡¢"
+msgid "State %d contains"
+msgstr "¾õÂÖ %d ¤¬´Þ¤à¤Î¤Ï"
-#: src/conflicts.c:597 src/conflicts.c:711
+#: src/conflicts.c:629 src/conflicts.c:749
#, c-format
msgid " %-4s\t[reduce using rule %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
msgid ""
" $default\treduce using rule %d (%s)\n"
" $default\tµ¬Â§ %d ¤òÍøÍѤ·¤Æ´Ô¸µ (%s)\n"
"\n"
-#: src/conflicts.c:694 src/conflicts.c:706
+#: src/conflicts.c:729 src/conflicts.c:743
#, c-format
msgid " %-4s\treduce using rule %d (%s)\n"
msgstr " %-4s\tµ¬Â§ %d ¤òÍøÍѤ·¤Æ´Ô¸µ (%s)\n"
-#: src/conflicts.c:732
+#: src/conflicts.c:770
#, c-format
msgid " $default\treduce using rule %d (%s)\n"
msgstr " $default\tµ¬Â§ %d ¤òÍøÍѤ·¤Æ´Ô¸µ (%s)\n"
msgid "maximum table size (%d) exceeded"
msgstr "ºÇÂç¥Æ¡¼¥Ö¥ë¥µ¥¤¥º (%s) ¤òĶ¤¨¤Þ¤·¤¿"
-#: src/print.c:88
+#: src/print.c:84
#, c-format
msgid " type %d is %s\n"
msgstr " ¥¿¥¤¥× %d ¤Ï %s ¤Ç¤¹\n"
-#: src/print.c:96
+#: src/print.c:92
#, c-format
msgid ""
"\n"
"¾õÂÖ %d\n"
"\n"
-#: src/print.c:140
+#: src/print.c:137
#, c-format
msgid " (rule %d)"
msgstr " (µ¬Â§ %d)"
-#: src/print.c:167
+#: src/print.c:164
msgid " $default\taccept\n"
msgstr " $default\taccept\n"
-#: src/print.c:169
+#: src/print.c:166
msgid " NO ACTIONS\n"
msgstr " Æ°ºî̵¤·\n"
#. I.e. strcmp(tags[symbol],"$")==0
-#: src/print.c:185
+#: src/print.c:184
#, c-format
msgid " $ \tgo to state %d\n"
msgstr " $ \t¾õÂÖ %d ¤Ø\n"
-#: src/print.c:187
+#: src/print.c:186
#, c-format
msgid " %-4s\tshift, and go to state %d\n"
msgstr " %-4s\t¥·¥Õ¥È¡¢¤ª¤è¤Ó¾õÂÖ %d ¤Ø\n"
msgid " %-4s\terror (nonassociative)\n"
msgstr " %-4s\t¥¨¥é¡¼ (Èó·ë¹ç)\n"
-#: src/print.c:236
+#: src/print.c:238
#, c-format
msgid " %-4s\tgo to state %d\n"
msgstr " %-4s\t¾õÂÖ %d ¤Ø\n"
#. rule # : LHS -> RHS
-#: src/print.c:261
+#: src/print.c:264
msgid ""
"\n"
"Grammar\n"
"\n"
"ʸˡ\n"
-#: src/print.c:266
+#: src/print.c:269
#, c-format
msgid "rule %-4d %s ->"
msgstr "µ¬Â§ %-4d %s ->"
-#: src/print.c:272
+#: src/print.c:275
msgid "\t\t/* empty */"
msgstr "\t\t/* ¶õ */"
#. TERMINAL (type #) : rule #s terminal is on RHS
-#: src/print.c:277
+#: src/print.c:280
msgid ""
"\n"
"Terminals, with rules where they appear\n"
"½ªÃ¼¥È¡¼¥¯¥ó¡¢¤ª¤è¤Ó¤½¤³¤Ë¸½¤ì¤¿µ¬Â§\n"
"\n"
-#: src/print.c:325
+#: src/print.c:328
msgid ""
"\n"
"Nonterminals, with rules where they appear\n"
"Èó½ªÃ¼¥È¡¼¥¯¥ó¡¢¤ª¤è¤Ó¤½¤³¤Ë¸½¤ì¤¿µ¬Â§\n"
"\n"
-#: src/print.c:351
+#: src/print.c:354
msgid " on left:"
msgstr " º¸ÊÕ:"
-#: src/print.c:366
+#: src/print.c:369
msgid " on right:"
msgstr " ±¦ÊÕ:"
msgid ""
msgstr ""
"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"
"Last-Translator: Erick Branderhorst <branderh@debian.org>\n"
"Language-Team: Dutch <nl@li.org>\n"
msgid "%s: memory exhausted\n"
msgstr "%s: geen geheugen meer beschikbaar\n"
-#: src/conflicts.c:198 src/conflicts.c:222
+#: src/conflicts.c:64
+#, c-format
+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"
+
+#: src/conflicts.c:130 src/conflicts.c:153
msgid "reduce"
msgstr "reduceer"
-#: src/conflicts.c:204 src/conflicts.c:218
+#: src/conflicts.c:136 src/conflicts.c:149
msgid "shift"
msgstr "verschuif"
-#: src/conflicts.c:226
+#: src/conflicts.c:157
msgid "an error"
msgstr "een fout"
-#: src/conflicts.c:298
+#. If invoked under the name `yacc', use the output format
+#. specified by POSIX.
+#: src/conflicts.c:446
+msgid "conflicts: "
+msgstr "conflictueerd: "
+
+#: src/conflicts.c:448
#, c-format
-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"
+msgid " %d shift/reduce"
+msgstr " %d vershuif/reduceer"
-#: src/conflicts.c:343
+#: src/conflicts.c:452
#, c-format
-msgid "State %d contains"
-msgstr "Stadium %d bevat"
+msgid " %d reduce/reduce"
+msgstr " %d reduceer/reduceer"
+
+#: src/conflicts.c:457
+#, c-format
+msgid "%s contains"
+msgstr "%s bevat"
-#: src/conflicts.c:346 src/conflicts.c:391
+#: src/conflicts.c:460 src/conflicts.c:525
msgid " 1 shift/reduce conflict"
msgstr " 1 verschuif/reduceer conflict"
-#: src/conflicts.c:348 src/conflicts.c:393
+#: src/conflicts.c:462 src/conflicts.c:527
#, c-format
msgid " %d shift/reduce conflicts"
msgstr " %d verschuif/reduceer conflicten"
-#: src/conflicts.c:351 src/conflicts.c:396
+#: src/conflicts.c:465 src/conflicts.c:530
msgid " and"
msgstr " en"
-#: src/conflicts.c:354 src/conflicts.c:399
+#: src/conflicts.c:468 src/conflicts.c:533
msgid " 1 reduce/reduce conflict"
msgstr " 1 reduceer/reduceer conflict"
-#: src/conflicts.c:356 src/conflicts.c:401
+#: src/conflicts.c:470 src/conflicts.c:535
#, c-format
msgid " %d reduce/reduce conflicts"
msgstr " %d reduceer/reduceer conflicten"
-#. If invoked under the name `yacc', use the output format
-#. specified by POSIX.
-#: src/conflicts.c:377
-msgid "conflicts: "
-msgstr "conflictueerd: "
-
-#: src/conflicts.c:379
+#: src/conflicts.c:522
#, c-format
-msgid " %d shift/reduce"
-msgstr " %d vershuif/reduceer"
-
-#: src/conflicts.c:383
-#, c-format
-msgid " %d reduce/reduce"
-msgstr " %d reduceer/reduceer"
-
-#: src/conflicts.c:388
-#, c-format
-msgid "%s contains"
-msgstr "%s bevat"
+msgid "State %d contains"
+msgstr "Stadium %d bevat"
-#: src/conflicts.c:597 src/conflicts.c:711
+#: src/conflicts.c:629 src/conflicts.c:749
#, c-format
msgid " %-4s\t[reduce using rule %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
msgid ""
" $default\treduce using rule %d (%s)\n"
" $default\treduce using rule %d (%s)\n"
"\n"
-#: src/conflicts.c:694 src/conflicts.c:706
+#: src/conflicts.c:729 src/conflicts.c:743
#, c-format
msgid " %-4s\treduce using rule %d (%s)\n"
msgstr ""
-#: src/conflicts.c:732
+#: src/conflicts.c:770
#, c-format
msgid " $default\treduce using rule %d (%s)\n"
msgstr ""
msgid "maximum table size (%d) exceeded"
msgstr "maximale tabel grootte (%s) overschreden"
-#: src/print.c:88
+#: src/print.c:84
#, c-format
msgid " type %d is %s\n"
msgstr ""
-#: src/print.c:96
+#: src/print.c:92
#, c-format
msgid ""
"\n"
"stadium %d\n"
"\n"
-#: src/print.c:140
+#: src/print.c:137
#, c-format
msgid " (rule %d)"
msgstr " (regel %d)"
-#: src/print.c:167
+#: src/print.c:164
msgid " $default\taccept\n"
msgstr ""
-#: src/print.c:169
+#: src/print.c:166
msgid " NO ACTIONS\n"
msgstr " GEEN AKTIES\n"
#. I.e. strcmp(tags[symbol],"$")==0
-#: src/print.c:185
+#: src/print.c:184
#, c-format
msgid " $ \tgo to state %d\n"
msgstr ""
-#: src/print.c:187
+#: src/print.c:186
#, c-format
msgid " %-4s\tshift, and go to state %d\n"
msgstr ""
msgid " %-4s\terror (nonassociative)\n"
msgstr ""
-#: src/print.c:236
+#: src/print.c:238
#, c-format
msgid " %-4s\tgo to state %d\n"
msgstr ""
#. rule # : LHS -> RHS
-#: src/print.c:261
+#: src/print.c:264
msgid ""
"\n"
"Grammar\n"
"\n"
"Grammatica\n"
-#: src/print.c:266
+#: src/print.c:269
#, c-format
msgid "rule %-4d %s ->"
msgstr "regel %-4d %s ->"
-#: src/print.c:272
+#: src/print.c:275
msgid "\t\t/* empty */"
msgstr ""
#. TERMINAL (type #) : rule #s terminal is on RHS
-#: src/print.c:277
+#: src/print.c:280
msgid ""
"\n"
"Terminals, with rules where they appear\n"
"Terminals, met regels waar ze voorkomen\n"
"\n"
-#: src/print.c:325
+#: src/print.c:328
msgid ""
"\n"
"Nonterminals, with rules where they appear\n"
"Geen terminals, met regels waar ze voorkomen\n"
"\n"
-#: src/print.c:351
+#: src/print.c:354
msgid " on left:"
msgstr " links:"
-#: src/print.c:366
+#: src/print.c:369
msgid " on right:"
msgstr " rechts:"
msgid ""
msgstr ""
"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"
"Last-Translator: Dmitry S. Sivachenko <dima@Chg.RU>\n"
"Language-Team: Russian <ru@li.org>\n"
msgid "%s: memory exhausted\n"
msgstr "%s: ÐÁÍÑÔØ ÉÓÞÅÒÐÁÎÁ\n"
-#: src/conflicts.c:198 src/conflicts.c:222
+#: src/conflicts.c:64
+#, c-format
+msgid "Conflict in state %d between rule %d and token %s resolved as %s.\n"
+msgstr ""
+"ëÏÎÆÌÉËÔ × ÓÏÓÔÏÑÎÉÉ %d ÍÅÖÄÕ ÐÒÁ×ÉÌÏÍ %d É ÌÅËÓÅÍÏÊ %s ÒÁÚÒÅÛÅÎ ËÁË %s.\n"
+
+#: src/conflicts.c:130 src/conflicts.c:153
msgid "reduce"
msgstr "×Ù×ÏÄ"
-#: src/conflicts.c:204 src/conflicts.c:218
+#: src/conflicts.c:136 src/conflicts.c:149
msgid "shift"
msgstr "ÓÄ×ÉÇ"
-#: src/conflicts.c:226
+#: src/conflicts.c:157
msgid "an error"
msgstr "ÏÛÉÂËÁ"
-#: src/conflicts.c:298
+#. If invoked under the name `yacc', use the output format
+#. specified by POSIX.
+#: src/conflicts.c:446
+msgid "conflicts: "
+msgstr "ËÏÎÆÌÉËÔÙ: "
+
+#: src/conflicts.c:448
#, c-format
-msgid "Conflict in state %d between rule %d and token %s resolved as %s.\n"
-msgstr ""
-"ëÏÎÆÌÉËÔ × ÓÏÓÔÏÑÎÉÉ %d ÍÅÖÄÕ ÐÒÁ×ÉÌÏÍ %d É ÌÅËÓÅÍÏÊ %s ÒÁÚÒÅÛÅÎ ËÁË %s.\n"
+msgid " %d shift/reduce"
+msgstr " %d ÓÄ×ÉÇ/×Ù×ÏÄ"
-#: src/conflicts.c:343
+#: src/conflicts.c:452
#, c-format
-msgid "State %d contains"
-msgstr "óÏÓÔÏÑÎÉÅ %d ÓÏÄÅÒÖÉÔ"
+msgid " %d reduce/reduce"
+msgstr " %d ×Ù×ÏÄ/×Ù×ÏÄ"
+
+#: src/conflicts.c:457
+#, c-format
+msgid "%s contains"
+msgstr "%s ÓÏÄÅÒÖÉÔ"
-#: src/conflicts.c:346 src/conflicts.c:391
+#: src/conflicts.c:460 src/conflicts.c:525
msgid " 1 shift/reduce conflict"
msgstr " 1 ËÏÎÆÌÉËÔ ÓÄ×ÉÇÁ/×Ù×ÏÄÁ"
-#: src/conflicts.c:348 src/conflicts.c:393
+#: src/conflicts.c:462 src/conflicts.c:527
#, c-format
msgid " %d shift/reduce conflicts"
msgstr " %d ËÏÎÆÌÉËÔÏ× ÓÄ×ÉÇÁ/×Ù×ÏÄÁ"
-#: src/conflicts.c:351 src/conflicts.c:396
+#: src/conflicts.c:465 src/conflicts.c:530
msgid " and"
msgstr " É"
-#: src/conflicts.c:354 src/conflicts.c:399
+#: src/conflicts.c:468 src/conflicts.c:533
msgid " 1 reduce/reduce conflict"
msgstr " 1 ËÏÎÆÌÉËÔ ×Ù×ÏÄÁ/×Ù×ÏÄÁ"
-#: src/conflicts.c:356 src/conflicts.c:401
+#: src/conflicts.c:470 src/conflicts.c:535
#, c-format
msgid " %d reduce/reduce conflicts"
msgstr " %d ËÏÎÆÌÉËÔÏ× ×Ù×ÏÄÁ/×Ù×ÏÄÁ"
-#. If invoked under the name `yacc', use the output format
-#. specified by POSIX.
-#: src/conflicts.c:377
-msgid "conflicts: "
-msgstr "ËÏÎÆÌÉËÔÙ: "
-
-#: src/conflicts.c:379
-#, c-format
-msgid " %d shift/reduce"
-msgstr " %d ÓÄ×ÉÇ/×Ù×ÏÄ"
-
-#: src/conflicts.c:383
-#, c-format
-msgid " %d reduce/reduce"
-msgstr " %d ×Ù×ÏÄ/×Ù×ÏÄ"
-
-#: src/conflicts.c:388
+#: src/conflicts.c:522
#, c-format
-msgid "%s contains"
-msgstr "%s ÓÏÄÅÒÖÉÔ"
+msgid "State %d contains"
+msgstr "óÏÓÔÏÑÎÉÅ %d ÓÏÄÅÒÖÉÔ"
-#: src/conflicts.c:597 src/conflicts.c:711
+#: src/conflicts.c:629 src/conflicts.c:749
#, c-format
msgid " %-4s\t[reduce using rule %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
msgid ""
" $default\treduce using rule %d (%s)\n"
" $default\t×Ù×ÏÄ Ó ÉÓÐÏÌØÚÏ×ÁÎÉÅÍ ÐÒÁ×ÉÌÁ %d (%s)\n"
"\n"
-#: src/conflicts.c:694 src/conflicts.c:706
+#: src/conflicts.c:729 src/conflicts.c:743
#, c-format
msgid " %-4s\treduce using rule %d (%s)\n"
msgstr " %-4s\t×Ù×ÏÄ Ó ÉÓÐÏÌØÚÏ×ÁÎÉÅÍ ÐÒÁ×ÉÌÁ %d (%s)\n"
-#: src/conflicts.c:732
+#: src/conflicts.c:770
#, c-format
msgid " $default\treduce using rule %d (%s)\n"
msgstr " $default\t×Ù×ÏÄ Ó ÉÓÐÏÌØÚÏ×ÁÎÉÅÍ ÐÒÁ×ÉÌÁ %d (%s)\n"
msgid "maximum table size (%d) exceeded"
msgstr "ÐÒÅ×ÙÛÅÎ ÍÁËÓÉÍÁÌØÎÙÊ ÒÁÚÍÅÒ ÔÁÂÌÉÃÙ (%d)"
-#: src/print.c:88
+#: src/print.c:84
#, c-format
msgid " type %d is %s\n"
msgstr " ÔÉÐ %d Ñ×ÌÑÅÔÓÑ %s\n"
-#: src/print.c:96
+#: src/print.c:92
#, c-format
msgid ""
"\n"
"ÓÏÓÔÏÑÎÉÅ %d\n"
"\n"
-#: src/print.c:140
+#: src/print.c:137
#, c-format
msgid " (rule %d)"
msgstr " (ÐÒÁ×ÉÌÏ %d)"
-#: src/print.c:167
+#: src/print.c:164
msgid " $default\taccept\n"
msgstr " $default\tÐÒÉÎÑÔÉÅ\n"
-#: src/print.c:169
+#: src/print.c:166
msgid " NO ACTIONS\n"
msgstr " îåô äåêóô÷éê\n"
#. I.e. strcmp(tags[symbol],"$")==0
-#: src/print.c:185
+#: src/print.c:184
#, c-format
msgid " $ \tgo to state %d\n"
msgstr " $ \tÐÅÒÅÈÏÄ × ÓÏÓÔÏÑÎÉÅ %d\n"
-#: src/print.c:187
+#: src/print.c:186
#, c-format
msgid " %-4s\tshift, and go to state %d\n"
msgstr " %-4s\tÓÄ×ÉÇ, É ÐÅÒÅÈÏÄ × ÓÏÓÔÏÑÎÉÅ %d\n"
msgid " %-4s\terror (nonassociative)\n"
msgstr " %-4s\tÏÛÉÂËÁ (ÎÅÁÓÓÏÃÉÁÔÉ×ÎÁÑ)\n"
-#: src/print.c:236
+#: src/print.c:238
#, c-format
msgid " %-4s\tgo to state %d\n"
msgstr " %-4s\tÐÅÒÅÈÏÄ × ÓÏÓÔÏÑÎÉÅ %d\n"
#. rule # : LHS -> RHS
-#: src/print.c:261
+#: src/print.c:264
msgid ""
"\n"
"Grammar\n"
"\n"
"çÒÁÍÍÁÔÉËÁ\n"
-#: src/print.c:266
+#: src/print.c:269
#, c-format
msgid "rule %-4d %s ->"
msgstr "ÐÒÁ×ÉÌÏ %-4d %s ->"
-#: src/print.c:272
+#: src/print.c:275
msgid "\t\t/* empty */"
msgstr "\t\t/* ÐÕÓÔÏ */"
#. TERMINAL (type #) : rule #s terminal is on RHS
-#: src/print.c:277
+#: src/print.c:280
msgid ""
"\n"
"Terminals, with rules where they appear\n"
"ôÅÒÍÉÎÁÌØÎÙÅ ÓÉÍ×ÏÌÙ Ó ÐÒÁ×ÉÌÁÍÉ, × ËÏÔÏÒÙÈ ÏÎÉ ÐÏÑ×ÌÑÀÔÓÑ\n"
"\n"
-#: src/print.c:325
+#: src/print.c:328
msgid ""
"\n"
"Nonterminals, with rules where they appear\n"
"îÅÔÅÒÍÉÎÁÌØÎÙÅ ÓÉÍ×ÏÌÙ Ó ÐÒÁ×ÉÌÁÍÉ, × ËÏÔÏÒÙÈ ÏÎÉ ÐÏÑ×ÌÑÀÔÓÑ\n"
"\n"
-#: src/print.c:351
+#: src/print.c:354
msgid " on left:"
msgstr " ÎÁÌÅ×Ï:"
-#: src/print.c:366
+#: src/print.c:369
msgid " on right:"
msgstr " ÎÁÐÒÁ×Ï:"
--- /dev/null
+/* 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));
extern short *lookaheads;
extern int fixed_outfiles;
-extern void initialize_conflicts PARAMS((void));
-extern void conflict_log PARAMS((void));
-extern void verbose_conflict_log PARAMS((void));
-extern void print_reductions PARAMS((int));
-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));
+extern void initialize_conflicts PARAMS ((void));
+extern void conflict_log PARAMS ((void));
+extern void verbose_conflict_log PARAMS ((void));
+extern void print_reductions PARAMS ((int));
+extern void finalize_conflicts PARAMS ((void));
char any_conflicts;
errs **err_table;
static int rrc_total;
static int src_count;
static int rrc_count;
+\f
-
-void
-initialize_conflicts (void)
+static inline void
+log_resolution (int state, int LAno, int token, char *resolution)
{
- register int i;
-/* register errs *sp; JF unused */
-
- conflicts = NEW2(nstates, char);
- shiftset = NEW2(tokensetsize, unsigned);
- lookaheadset = NEW2(tokensetsize, unsigned);
-
- err_table = NEW2(nstates, errs *);
-
- any_conflicts = 0;
-
- for (i = 0; i < nstates; i++)
- set_conflicts(i);
+ if (verboseflag)
+ fprintf (foutput,
+ _("\
+Conflict in state %d between rule %d and token %s resolved as %s.\n"),
+ state, LAruleno[LAno], tags[token], resolution);
}
+/*------------------------------------------------------------------.
+| 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
-set_conflicts (int state)
+flush_shift (int state, int token)
{
- register int i;
- register int k;
- register shifts *shiftp;
- register unsigned *fp2;
- register unsigned *fp3;
- register unsigned *fp4;
- register unsigned *fp1;
- register int symbol;
-
- if (consistent[state]) return;
-
- for (i = 0; i < tokensetsize; i++)
- lookaheadset[i] = 0;
+ shifts *shiftp;
+ int k, i;
shiftp = shift_table[state];
+
if (shiftp)
{
k = shiftp->nshifts;
for (i = 0; i < k; i++)
{
- symbol = accessing_symbol[shiftp->shifts[i]];
- if (ISVAR(symbol)) break;
- SETBIT(lookaheadset, symbol);
- }
- }
-
- k = lookaheads[state + 1];
- fp4 = lookaheadset + tokensetsize;
-
- /* loop over all rules which require lookahead in this state */
- /* first check for shift-reduce conflict, and try to resolve using precedence */
-
- for (i = lookaheads[state]; i < k; i++)
- if (rprec[LAruleno[i]])
- {
- fp1 = LA + i * tokensetsize;
- fp2 = fp1;
- fp3 = lookaheadset;
-
- while (fp3 < fp4)
- {
- if (*fp2++ & *fp3++)
- {
- resolve_sr_conflict(state, i);
- break;
- }
- }
- }
-
- /* loop over all rules which require lookahead in this state */
- /* Check for conflicts not resolved above. */
-
- for (i = lookaheads[state]; i < k; i++)
- {
- fp1 = LA + i * tokensetsize;
- fp2 = fp1;
- fp3 = lookaheadset;
-
- while (fp3 < fp4)
- {
- if (*fp2++ & *fp3++)
- {
- conflicts[state] = 1;
- any_conflicts = 1;
- }
+ if (shiftp->shifts[i]
+ && token == accessing_symbol[shiftp->shifts[i]])
+ (shiftp->shifts[i]) = 0;
}
-
- fp2 = fp1;
- fp3 = lookaheadset;
-
- while (fp3 < fp4)
- *fp3++ |= *fp2++;
}
}
-
-/* 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. */
+/*------------------------------------------------------------------.
+| 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));
+ 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 */
{
if (sprec[i] < redprec)
{
- if (verboseflag) log_resolution(state, lookaheadnum, i, _("reduce"));
- *fp2 &= ~mask; /* flush the shift for this token */
- flush_shift(state, i);
+ 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 */
+ 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. */
+ 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"));
+ log_resolution (state, lookaheadnum, i, _("shift"));
break;
case LEFT_ASSOC:
- if (verboseflag) log_resolution(state, lookaheadnum, i, _("reduce"));
+ log_resolution (state, lookaheadnum, i, _("reduce"));
break;
case NON_ASSOC:
- if (verboseflag) log_resolution(state, lookaheadnum, i, _("an error"));
+ 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);
+ *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 */
+ {
+ *fp1 &= ~mask; /* flush the reduce for this token */
}
if (sassoc[i] == NON_ASSOC)
{
if (mask == 0)
{
mask = 1;
- fp2++; fp1++;
+ 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. */
+ a permanent errs structure for this state, to record them. */
i = (char *) errtokens - (char *) errp;
- err_table[state] = (errs *) xmalloc ((unsigned int)i);
+ err_table[state] = (errs *) xmalloc ((unsigned int) i);
bcopy (errp, err_table[state], i);
}
else
err_table[state] = 0;
- free(errp);
+ 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)
+set_conflicts (int state)
{
- register shifts *shiftp;
- register int k, i;
-/* register unsigned symbol; JF unused */
+ int i;
+ int k;
+ shifts *shiftp;
+ unsigned *fp2;
+ unsigned *fp3;
+ unsigned *fp4;
+ unsigned *fp1;
+ int symbol;
+
+ if (consistent[state])
+ return;
- shiftp = shift_table[state];
+ for (i = 0; i < tokensetsize; i++)
+ lookaheadset[i] = 0;
+ 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;
+ symbol = accessing_symbol[shiftp->shifts[i]];
+ if (ISVAR (symbol))
+ break;
+ SETBIT (lookaheadset, symbol);
}
}
-}
-
-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);
-}
+ k = lookaheads[state + 1];
+ fp4 = lookaheadset + tokensetsize;
+ /* Loop over all rules which require lookahead in this state. First
+ check for shift-reduce conflict, and try to resolve using
+ precedence */
+ for (i = lookaheads[state]; i < k; i++)
+ if (rprec[LAruleno[i]])
+ {
+ fp1 = LA + i * tokensetsize;
+ fp2 = fp1;
+ fp3 = lookaheadset;
-void
-conflict_log (void)
-{
- register int i;
+ while (fp3 < fp4)
+ {
+ if (*fp2++ & *fp3++)
+ {
+ resolve_sr_conflict (state, i);
+ break;
+ }
+ }
+ }
- src_total = 0;
- rrc_total = 0;
- for (i = 0; i < nstates; i++)
+ /* Loop over all rules which require lookahead in this state. Check
+ for conflicts not resolved above. */
+ for (i = lookaheads[state]; i < k; i++)
{
- if (conflicts[i])
+ fp1 = LA + i * tokensetsize;
+ fp2 = fp1;
+ fp3 = lookaheadset;
+
+ while (fp3 < fp4)
{
- count_sr_conflicts(i);
- count_rr_conflicts(i);
- src_total += src_count;
- rrc_total += rrc_count;
+ if (*fp2++ & *fp3++)
+ {
+ conflicts[state] = 1;
+ any_conflicts = 1;
+ }
}
- }
- total_conflicts();
-}
+ fp2 = fp1;
+ fp3 = lookaheadset;
+ while (fp3 < fp4)
+ *fp3++ |= *fp2++;
+ }
+}
void
-verbose_conflict_log (void)
+initialize_conflicts (void)
{
- register int i;
+ int i;
+/* errs *sp; JF unused */
- 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;
+ conflicts = NEW2 (nstates, char);
+ shiftset = NEW2 (tokensetsize, unsigned);
+ lookaheadset = NEW2 (tokensetsize, unsigned);
- 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);
+ err_table = NEW2 (nstates, errs *);
- putc('.', foutput);
- putc('\n', foutput);
- }
- }
+ any_conflicts = 0;
- total_conflicts();
+ for (i = 0; i < nstates; i++)
+ set_conflicts (i);
}
-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
count_sr_conflicts (int state)
{
- register int i;
- register int k;
- register int mask;
- register shifts *shiftp;
- register unsigned *fp1;
- register unsigned *fp2;
- register unsigned *fp3;
- register int symbol;
+ int i;
+ int k;
+ int mask;
+ shifts *shiftp;
+ unsigned *fp1;
+ unsigned *fp2;
+ unsigned *fp3;
+ int symbol;
src_count = 0;
shiftp = shift_table[state];
- if (!shiftp) return;
+ if (!shiftp)
+ return;
for (i = 0; i < tokensetsize; i++)
{
k = shiftp->nshifts;
for (i = 0; i < k; i++)
{
- if (! shiftp->shifts[i]) continue;
+ if (!shiftp->shifts[i])
+ continue;
symbol = accessing_symbol[shiftp->shifts[i]];
- if (ISVAR(symbol)) break;
- SETBIT(shiftset, symbol);
+ if (ISVAR (symbol))
+ break;
+ SETBIT (shiftset, symbol);
}
k = lookaheads[state + 1];
}
+/*----------------------------------------------.
+| Count the number of reduce/reduce conflicts. |
+`----------------------------------------------*/
+
static void
count_rr_conflicts (int state)
{
- register int i;
- register int j;
- register int count;
- register unsigned mask;
- register unsigned *baseword;
- register unsigned *wordp;
- register int m;
- register int n;
+ int i;
+ int j;
+ int count;
+ unsigned mask;
+ unsigned *baseword;
+ unsigned *wordp;
+ int m;
+ int n;
rrc_count = 0;
m = lookaheads[state];
n = lookaheads[state + 1];
- if (n - m < 2) return;
+ if (n - m < 2)
+ return;
mask = 1;
baseword = LA + m * tokensetsize;
wordp += tokensetsize;
}
- if (count >= 2) rrc_count++;
+ if (count >= 2)
+ rrc_count++;
mask <<= 1;
if (mask == 0)
}
}
+/*------------------------------------.
+| 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
print_reductions (int state)
{
- register int i;
- register int j;
- register int k;
- register unsigned *fp1;
- register unsigned *fp2;
- register unsigned *fp3;
- register unsigned *fp4;
- register int rule;
- register int symbol;
- register unsigned mask;
- register int m;
- register int n;
- register int default_LA;
- register int default_rule = 0;
- register int cmax;
- register int count;
- register shifts *shiftp;
- register errs *errp;
+ int i;
+ int j;
+ int k;
+ unsigned *fp1;
+ unsigned *fp2;
+ unsigned *fp3;
+ unsigned *fp4;
+ int rule;
+ int symbol;
+ unsigned mask;
+ int m;
+ int n;
+ int default_LA;
+ int default_rule = 0;
+ int cmax;
+ int count;
+ shifts *shiftp;
+ errs *errp;
int nodefault = 0;
for (i = 0; i < tokensetsize; i++)
k = shiftp->nshifts;
for (i = 0; i < k; i++)
{
- if (! shiftp->shifts[i]) continue;
+ if (!shiftp->shifts[i])
+ continue;
symbol = accessing_symbol[shiftp->shifts[i]];
- if (ISVAR(symbol)) break;
+ if (ISVAR (symbol))
+ break;
/* if this state has a shift for the error token,
don't use a default rule. */
- if (symbol == error_token_number) nodefault = 1;
- SETBIT(shiftset, symbol);
+ if (symbol == error_token_number)
+ nodefault = 1;
+ SETBIT (shiftset, symbol);
}
}
k = errp->nerrs;
for (i = 0; i < k; i++)
{
- if (! errp->errs[i]) continue;
+ if (!errp->errs[i])
+ continue;
symbol = errp->errs[i];
- SETBIT(shiftset, symbol);
+ SETBIT (shiftset, symbol);
}
}
m = lookaheads[state];
n = lookaheads[state + 1];
- if (n - m == 1 && ! nodefault)
+ if (n - m == 1 && !nodefault)
{
default_rule = LAruleno[m];
for (i = 0; i < ntokens; i++)
{
if (mask & *fp3)
- fprintf(foutput, _(" %-4s\t[reduce using rule %d (%s)]\n"),
- tags[i], default_rule, tags[rlhs[default_rule]]);
+ fprintf (foutput, _(" %-4s\t[reduce using rule %d (%s)]\n"),
+ tags[i], default_rule, tags[rlhs[default_rule]]);
mask <<= 1;
if (mask == 0)
}
}
- fprintf(foutput, _(" $default\treduce using rule %d (%s)\n\n"),
- default_rule, tags[rlhs[default_rule]]);
+ fprintf (foutput, _(" $default\treduce using rule %d (%s)\n\n"),
+ default_rule, tags[rlhs[default_rule]]);
}
else if (n - m >= 1)
{
default_LA = -1;
fp4 = lookaheadset + tokensetsize;
- if (! nodefault)
+ if (!nodefault)
for (i = m; i < n; i++)
{
fp1 = LA + i * tokensetsize;
}
for (i = 0; i < tokensetsize; i++)
- shiftset[i] = 0;
+ shiftset[i] = 0;
if (shiftp)
- {
- k = shiftp->nshifts;
- for (i = 0; i < k; i++)
+ {
+ k = shiftp->nshifts;
+ for (i = 0; i < k; i++)
{
- if (! shiftp->shifts[i]) continue;
+ if (!shiftp->shifts[i])
+ continue;
symbol = accessing_symbol[shiftp->shifts[i]];
- if (ISVAR(symbol)) break;
- SETBIT(shiftset, symbol);
+ if (ISVAR (symbol))
+ break;
+ SETBIT (shiftset, symbol);
}
- }
+ }
mask = 1;
fp1 = LA + m * tokensetsize;
if (j != default_LA)
{
rule = LAruleno[j];
- fprintf(foutput, _(" %-4s\treduce using rule %d (%s)\n"),
- tags[i], rule, tags[rlhs[rule]]);
+ fprintf (foutput,
+ _(" %-4s\treduce using rule %d (%s)\n"),
+ tags[i], rule, tags[rlhs[rule]]);
}
- else defaulted = 1;
+ else
+ defaulted = 1;
count++;
}
if (defaulted)
{
rule = LAruleno[default_LA];
- fprintf(foutput, _(" %-4s\treduce using rule %d (%s)\n"),
- tags[i], rule, tags[rlhs[rule]]);
+ fprintf (foutput,
+ _(" %-4s\treduce using rule %d (%s)\n"),
+ tags[i], rule, tags[rlhs[rule]]);
defaulted = 0;
}
rule = LAruleno[j];
- fprintf(foutput, _(" %-4s\t[reduce using rule %d (%s)]\n"),
- tags[i], rule, tags[rlhs[rule]]);
+ fprintf (foutput,
+ _(" %-4s\t[reduce using rule %d (%s)]\n"),
+ tags[i], rule, tags[rlhs[rule]]);
}
}
{
mask = 1;
/* 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++;
fp2++;
}
if (default_LA >= 0)
{
- fprintf(foutput, _(" $default\treduce using rule %d (%s)\n"),
- default_rule, tags[rlhs[default_rule]]);
+ fprintf (foutput, _(" $default\treduce using rule %d (%s)\n"),
+ default_rule, tags[rlhs[default_rule]]);
}
- putc('\n', foutput);
+ putc ('\n', foutput);
}
}
void
finalize_conflicts (void)
{
- FREE(conflicts);
- FREE(shiftset);
- FREE(lookaheadset);
+ FREE (conflicts);
+ FREE (shiftset);
+ FREE (lookaheadset);
}
/* 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
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
-any later version.
+ Bison is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
-Bison is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
+ Bison is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
-You should have received a copy of the GNU General Public License
-along with Bison; see the file COPYING. If not, write to
-the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-Boston, MA 02111-1307, USA. */
+ You should have received a copy of the GNU General Public License
+ along with Bison; see the file COPYING. If not, write to
+ the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ Boston, MA 02111-1307, USA. */
#include "system.h"
extern char *conflicts;
extern int final_state;
-extern void conflict_log PARAMS((void));
-extern void verbose_conflict_log PARAMS((void));
-extern void print_reductions PARAMS((int));
+extern void conflict_log PARAMS ((void));
+extern void verbose_conflict_log PARAMS ((void));
+extern void print_reductions PARAMS ((int));
-extern void terse PARAMS((void));
-extern void verbose PARAMS((void));
+extern void terse PARAMS ((void));
+extern void verbose PARAMS ((void));
-#if 0 /* XXX currently unused. */
-static void print_token PARAMS((int, int));
+#if 0 /* XXX currently unused. */
+static void print_token PARAMS ((int, int));
#endif
-static void print_state PARAMS((int));
-static void print_core PARAMS((int));
-static void print_actions PARAMS((int));
-static void print_grammar PARAMS((void));
+static void print_state PARAMS ((int));
+static void print_core PARAMS ((int));
+static void print_actions PARAMS ((int));
+static void print_grammar PARAMS ((void));
void
terse (void)
{
if (any_conflicts)
- {
- conflict_log();
- }
+ conflict_log ();
}
void
verbose (void)
{
- register int i;
+ int i;
if (any_conflicts)
- verbose_conflict_log();
+ verbose_conflict_log ();
- print_grammar();
+ print_grammar ();
for (i = 0; i < nstates; i++)
- {
- print_state(i);
- }
+ print_state (i);
}
-#if 0 /* XXX currently unused. */
+#if 0 /* XXX currently unused. */
static void
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
static void
print_state (int state)
{
- fprintf(foutput, _("\n\nstate %d\n\n"), state);
- print_core(state);
- print_actions(state);
+ fprintf (foutput, _("\n\nstate %d\n\n"), state);
+ print_core (state);
+ print_actions (state);
}
static void
print_core (int state)
{
- register int i;
- register int k;
- register int rule;
- register core *statep;
- register short *sp;
- register short *sp1;
+ int i;
+ int k;
+ int rule;
+ core *statep;
+ short *sp;
+ short *sp1;
statep = state_table[state];
k = statep->nitems;
- if (k == 0) return;
+ if (k == 0)
+ return;
for (i = 0; i < k; i++)
{
sp++;
rule = -(*sp);
- fprintf(foutput, " %s -> ", tags[rlhs[rule]]);
+ fprintf (foutput, " %s -> ", tags[rlhs[rule]]);
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)
{
- fprintf(foutput, " %s", tags[*sp]);
+ fprintf (foutput, " %s", tags[*sp]);
sp++;
}
fprintf (foutput, _(" (rule %d)"), rule);
- putc('\n', foutput);
+ putc ('\n', foutput);
}
- putc('\n', foutput);
+ putc ('\n', foutput);
}
static void
print_actions (int state)
{
- register int i;
- register int k;
- register int state1;
- register int symbol;
- register shifts *shiftp;
- register errs *errp;
- register reductions *redp;
- register int rule;
+ int i;
+ int k;
+ int state1;
+ int symbol;
+ shifts *shiftp;
+ errs *errp;
+ reductions *redp;
+ int rule;
shiftp = shift_table[state];
redp = reduction_table[state];
if (!shiftp && !redp)
{
if (final_state == state)
- fprintf(foutput, _(" $default\taccept\n"));
+ fprintf (foutput, _(" $default\taccept\n"));
else
- fprintf(foutput, _(" NO ACTIONS\n"));
+ fprintf (foutput, _(" NO ACTIONS\n"));
return;
}
for (i = 0; i < k; i++)
{
- if (! shiftp->shifts[i]) continue;
+ if (!shiftp->shifts[i])
+ continue;
state1 = shiftp->shifts[i];
symbol = accessing_symbol[state1];
/* The following line used to be turned off. */
- if (ISVAR(symbol)) break;
- if (symbol==0) /* I.e. strcmp(tags[symbol],"$")==0 */
- fprintf(foutput, _(" $ \tgo to state %d\n"), state1);
- else
- fprintf(foutput, _(" %-4s\tshift, and go to state %d\n"),
- tags[symbol], state1);
+ if (ISVAR (symbol))
+ break;
+ if (symbol == 0) /* I.e. strcmp(tags[symbol],"$")==0 */
+ fprintf (foutput, _(" $ \tgo to state %d\n"), state1);
+ else
+ fprintf (foutput, _(" %-4s\tshift, and go to state %d\n"),
+ tags[symbol], state1);
}
if (i > 0)
- putc('\n', foutput);
+ putc ('\n', foutput);
}
else
{
for (j = 0; j < nerrs; j++)
{
- if (! errp->errs[j]) continue;
+ if (!errp->errs[j])
+ continue;
symbol = errp->errs[j];
- fprintf(foutput, _(" %-4s\terror (nonassociative)\n"), tags[symbol]);
+ fprintf (foutput, _(" %-4s\terror (nonassociative)\n"),
+ tags[symbol]);
}
if (j > 0)
- putc('\n', foutput);
+ putc ('\n', foutput);
}
if (consistent[state] && redp)
{
rule = redp->rules[0];
symbol = rlhs[rule];
- fprintf(foutput, _(" $default\treduce using rule %d (%s)\n\n"),
- rule, tags[symbol]);
+ fprintf (foutput, _(" $default\treduce using rule %d (%s)\n\n"),
+ rule, tags[symbol]);
}
else if (redp)
{
- print_reductions(state);
+ print_reductions (state);
}
if (i < k)
{
for (; i < k; i++)
{
- if (! shiftp->shifts[i]) continue;
+ if (!shiftp->shifts[i])
+ continue;
state1 = shiftp->shifts[i];
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);
}
}
print_grammar (void)
{
int i, j;
- short* rule;
+ short *rule;
char buffer[90];
int column = 0;
/* rule # : LHS -> RHS */
- fputs(_("\nGrammar\n"), foutput);
+ fputs (_("\nGrammar\n"), foutput);
for (i = 1; i <= nrules; i++)
/* Don't print rules disabled in reduce_grammar_tables. */
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]];
if (*rule > 0)
while (*rule > 0)
- fprintf(foutput, " %s", tags[*rule++]);
+ fprintf (foutput, " %s", tags[*rule++]);
else
fputs (_(" /* empty */"), foutput);
- putc('\n', foutput);
+ putc ('\n', foutput);
}
/* TERMINAL (type #) : rule #s terminal is on RHS */
- fputs(_("\nTerminals, with rules where they appear\n\n"), foutput);
- fprintf(foutput, "%s (-1)\n", tags[0]);
+ fputs (_("\nTerminals, with rules where they appear\n\n"), foutput);
+ fprintf (foutput, "%s (-1)\n", tags[0]);
if (translations)
{
for (i = 0; i <= max_user_token_number; i++)
{
buffer[0] = 0;
column = strlen (tags[token_translations[i]]);
- fprintf(foutput, "%s", tags[token_translations[i]]);
+ fprintf (foutput, "%s", tags[token_translations[i]]);
END_TEST (50);
sprintf (buffer, " (%d)", i);
if (*rule == token_translations[i])
{
END_TEST (65);
- sprintf (buffer + strlen(buffer), " %d", j);
+ sprintf (buffer + strlen (buffer), " %d", j);
break;
}
}
{
buffer[0] = 0;
column = strlen (tags[i]);
- fprintf(foutput, "%s", tags[i]);
+ fprintf (foutput, "%s", tags[i]);
END_TEST (50);
sprintf (buffer, " (%d)", i);
if (*rule == i)
{
END_TEST (65);
- sprintf (buffer + strlen(buffer), " %d", j);
+ sprintf (buffer + strlen (buffer), " %d", j);
break;
}
}
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++)
{
int left_count = 0, right_count = 0;
}
buffer[0] = 0;
- fprintf(foutput, "%s", tags[i]);
+ fprintf (foutput, "%s", tags[i]);
column = strlen (tags[i]);
sprintf (buffer, " (%d)", i);
END_TEST (0);
if (left_count > 0)
{
END_TEST (50);
- sprintf (buffer + strlen(buffer), _(" on left:"));
+ sprintf (buffer + strlen (buffer), _(" on left:"));
for (j = 1; j <= nrules; j++)
{
END_TEST (65);
if (rlhs[j] == i)
- sprintf (buffer + strlen(buffer), " %d", j);
+ sprintf (buffer + strlen (buffer), " %d", j);
}
}
if (right_count > 0)
{
if (left_count > 0)
- sprintf (buffer + strlen(buffer), ",");
+ sprintf (buffer + strlen (buffer), ",");
END_TEST (50);
- sprintf (buffer + strlen(buffer), _(" on right:"));
+ sprintf (buffer + strlen (buffer), _(" on right:"));
for (j = 1; j <= nrules; j++)
{
for (rule = &ritem[rrhs[j]]; *rule > 0; rule++)
if (*rule == i)
{
END_TEST (65);
- sprintf (buffer + strlen(buffer), " %d", j);
+ sprintf (buffer + strlen (buffer), " %d", j);
break;
}
}
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