* src/closure.h: New file.
authorAkim Demaille <akim@epita.fr>
Thu, 21 Sep 2000 10:17:59 +0000 (10:17 +0000)
committerAkim Demaille <akim@epita.fr>
Thu, 21 Sep 2000 10:17:59 +0000 (10:17 +0000)
* 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.

12 files changed:
ChangeLog
po/de.po
po/es.po
po/et.po
po/fr.po
po/ja.po
po/nl.po
po/ru.po
src/closure.h [new file with mode: 0644]
src/conflicts.c
src/print.c
tests/suite.m4

index 7e4da70..530c754 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -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.c: Formatting changes, topological sort over the
index 408e753..5e824ed 100644 (file)
--- a/po/de.po
+++ b/po/de.po
@@ -5,7 +5,7 @@
 msgid ""
 msgstr ""
 "Project-Id-Version: bison 1.25\n"
-"POT-Creation-Date: 2000-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"
@@ -23,77 +23,77 @@ msgstr ""
 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"
@@ -102,12 +102,12 @@ msgstr ""
 "    $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"
@@ -267,12 +267,12 @@ msgstr "F
 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"
@@ -285,26 +285,26 @@ msgstr ""
 "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"
@@ -314,13 +314,13 @@ msgstr "    %-4s\tSchiebe und gehe zu Zustand %d 
 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"
@@ -328,17 +328,17 @@ msgstr ""
 "\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"
@@ -348,7 +348,7 @@ msgstr ""
 "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"
@@ -358,11 +358,11 @@ msgstr ""
 "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:"
 
index 8e3dbe7..f5a746a 100644 (file)
--- a/po/es.po
+++ b/po/es.po
@@ -30,7 +30,7 @@
 msgid ""
 msgstr ""
 "Project-Id-Version: GNU bison 1.25\n"
-"POT-Creation-Date: 2000-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"
@@ -48,55 +48,28 @@ msgstr ""
 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: "
 
@@ -112,7 +85,7 @@ 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)"
@@ -129,22 +102,49 @@ msgstr " %d desplazamiento(s)/reducci
 #
 # 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"
@@ -153,12 +153,12 @@ msgstr ""
 "    $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"
@@ -332,12 +332,12 @@ msgstr "Entrando set_nullable"
 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"
@@ -350,26 +350,26 @@ msgstr ""
 "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"
@@ -379,13 +379,13 @@ 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"
@@ -393,7 +393,7 @@ msgstr ""
 "\n"
 "Gramática\n"
 
-#: src/print.c:266
+#: src/print.c:269
 #, c-format
 msgid "rule %-4d %s ->"
 msgstr "regla %-4d %s ->"
@@ -403,12 +403,12 @@ 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"
@@ -418,7 +418,7 @@ msgstr ""
 "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"
@@ -427,11 +427,11 @@ msgstr ""
 "\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:"
 
index db972f6..502a737 100644 (file)
--- a/po/et.po
+++ b/po/et.po
@@ -5,7 +5,7 @@
 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"
@@ -23,77 +23,77 @@ msgstr "liiga palju olekuid (maks %d)"
 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"
@@ -102,12 +102,12 @@ msgstr ""
 "    $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"
@@ -288,12 +288,12 @@ msgstr "Entering set_nullable"
 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"
@@ -306,26 +306,26 @@ msgstr ""
 "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"
@@ -335,13 +335,13 @@ 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"
@@ -349,17 +349,17 @@ msgstr ""
 "\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"
@@ -369,7 +369,7 @@ msgstr ""
 "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"
@@ -379,11 +379,11 @@ msgstr ""
 "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:"
 
index 490e8f0..88424e2 100644 (file)
--- a/po/fr.po
+++ b/po/fr.po
@@ -5,7 +5,7 @@
 msgid ""
 msgstr ""
 "Project-Id-Version: bison 1.25\n"
-"POT-Creation-Date: 2000-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"
@@ -23,78 +23,78 @@ msgstr ""
 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"
@@ -103,12 +103,12 @@ msgstr ""
 "    $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"
@@ -272,12 +272,12 @@ msgstr "Entr
 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"
@@ -290,26 +290,26 @@ msgstr ""
 "é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"
@@ -319,13 +319,13 @@ msgstr "    %-4s\td
 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"
@@ -333,17 +333,17 @@ msgstr ""
 "\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"
@@ -353,7 +353,7 @@ msgstr ""
 "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"
@@ -363,11 +363,11 @@ msgstr ""
 "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:"
 
index 68680e5..b9fd88d 100644 (file)
--- a/po/ja.po
+++ b/po/ja.po
@@ -5,7 +5,7 @@
 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"
@@ -23,77 +23,77 @@ msgstr "%s 
 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"
@@ -102,12 +102,12 @@ msgstr ""
 "    $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"
@@ -271,12 +271,12 @@ msgstr "set_nullable 
 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"
@@ -289,26 +289,26 @@ msgstr ""
 "¾õÂÖ %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"
@@ -318,13 +318,13 @@ msgstr "    %-4s\t
 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"
@@ -332,17 +332,17 @@ msgstr ""
 "\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"
@@ -352,7 +352,7 @@ msgstr ""
 "½ªÃ¼¥È¡¼¥¯¥ó¡¢¤ª¤è¤Ó¤½¤³¤Ë¸½¤ì¤¿µ¬Â§\n"
 "\n"
 
-#: src/print.c:325
+#: src/print.c:328
 msgid ""
 "\n"
 "Nonterminals, with rules where they appear\n"
@@ -362,11 +362,11 @@ msgstr ""
 "Èó½ªÃ¼¥È¡¼¥¯¥ó¡¢¤ª¤è¤Ó¤½¤³¤Ë¸½¤ì¤¿µ¬Â§\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 " ±¦ÊÕ:"
 
index f49a779..e529871 100644 (file)
--- a/po/nl.po
+++ b/po/nl.po
@@ -5,7 +5,7 @@
 msgid ""
 msgstr ""
 "Project-Id-Version: bison 1.25\n"
-"POT-Creation-Date: 2000-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"
@@ -23,77 +23,77 @@ msgstr ""
 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"
@@ -102,12 +102,12 @@ msgstr ""
 "    $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 ""
@@ -271,12 +271,12 @@ msgstr "Inkomende set nullable"
 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"
@@ -289,26 +289,26 @@ msgstr ""
 "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 ""
@@ -318,13 +318,13 @@ 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"
@@ -332,17 +332,17 @@ msgstr ""
 "\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"
@@ -352,7 +352,7 @@ msgstr ""
 "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"
@@ -362,11 +362,11 @@ msgstr ""
 "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:"
 
index c2cca45..a195624 100644 (file)
--- a/po/ru.po
+++ b/po/ru.po
@@ -5,7 +5,7 @@
 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"
@@ -23,78 +23,78 @@ msgstr "
 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"
@@ -103,12 +103,12 @@ msgstr ""
 "    $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"
@@ -290,12 +290,12 @@ msgstr "
 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"
@@ -308,26 +308,26 @@ msgstr ""
 "ÓÏÓÔÏÑÎÉÅ %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"
@@ -337,13 +337,13 @@ msgstr "    %-4s\t
 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"
@@ -351,17 +351,17 @@ msgstr ""
 "\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"
@@ -371,7 +371,7 @@ msgstr ""
 "ôÅÒÍÉÎÁÌØÎÙÅ ÓÉÍ×ÏÌÙ Ó ÐÒÁ×ÉÌÁÍÉ, × ËÏÔÏÒÙÈ ÏÎÉ ÐÏÑ×ÌÑÀÔÓÑ\n"
 "\n"
 
-#: src/print.c:325
+#: src/print.c:328
 msgid ""
 "\n"
 "Nonterminals, with rules where they appear\n"
@@ -381,11 +381,11 @@ msgstr ""
 "îÅÔÅÒÍÉÎÁÌØÎÙÅ ÓÉÍ×ÏÌÙ Ó ÐÒÁ×ÉÌÁÍÉ, × ËÏÔÏÒÙÈ ÏÎÉ ÐÏÑ×ÌÑÀÔÓÑ\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 " ÎÁÐÒÁ×Ï:"
 
diff --git a/src/closure.h b/src/closure.h
new file mode 100644 (file)
index 0000000..2325e7c
--- /dev/null
@@ -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));
index 6b9cad0..418b107 100644 (file)
@@ -36,19 +36,11 @@ extern short *LAruleno;
 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;
@@ -62,122 +54,62 @@ static int src_total;
 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  */
@@ -195,46 +127,45 @@ resolve_sr_conflict (int state, int lookaheadnum)
        {
          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)
                {
@@ -248,180 +179,152 @@ resolve_sr_conflict (int state, int lookaheadnum)
       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++)
     {
@@ -432,10 +335,12 @@ count_sr_conflicts (int state)
   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];
@@ -473,24 +378,29 @@ count_sr_conflicts (int state)
 }
 
 
+/*----------------------------------------------.
+| 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;
@@ -507,7 +417,8 @@ count_rr_conflicts (int state)
          wordp += tokensetsize;
        }
 
-      if (count >= 2) rrc_count++;
+      if (count >= 2)
+       rrc_count++;
 
       mask <<= 1;
       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
 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++)
@@ -551,13 +579,16 @@ print_reductions (int state)
       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);
        }
     }
 
@@ -567,16 +598,17 @@ print_reductions (int state)
       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];
 
@@ -594,8 +626,8 @@ print_reductions (int state)
       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)
@@ -605,8 +637,8 @@ print_reductions (int state)
            }
        }
 
-      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)
     {
@@ -614,7 +646,7 @@ print_reductions (int state)
       default_LA = -1;
       fp4 = lookaheadset + tokensetsize;
 
-      if (! nodefault)
+      if (!nodefault)
        for (i = m; i < n; i++)
          {
            fp1 = LA + i * tokensetsize;
@@ -655,19 +687,21 @@ print_reductions (int state)
          }
 
       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;
@@ -691,10 +725,12 @@ print_reductions (int state)
                      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++;
                    }
@@ -703,13 +739,15 @@ print_reductions (int state)
                      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]]);
                    }
                }
 
@@ -721,7 +759,7 @@ print_reductions (int state)
            {
              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++;
            }
@@ -729,11 +767,11 @@ print_reductions (int state)
 
       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);
     }
 }
 
@@ -741,7 +779,7 @@ print_reductions (int state)
 void
 finalize_conflicts (void)
 {
-  FREE(conflicts);
-  FREE(shiftset);
-  FREE(lookaheadset);
+  FREE (conflicts);
+  FREE (shiftset);
+  FREE (lookaheadset);
 }
index 52baf10..373c5ff 100644 (file)
@@ -1,22 +1,22 @@
 /* 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"
@@ -38,54 +38,50 @@ extern char any_conflicts;
 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
 
@@ -93,26 +89,27 @@ print_token (int extnum, int token)
 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++)
     {
@@ -122,40 +119,40 @@ print_core (int state)
        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];
@@ -164,9 +161,9 @@ print_actions (int 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;
     }
 
@@ -176,20 +173,22 @@ print_actions (int state)
 
       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
     {
@@ -205,38 +204,42 @@ print_actions (int state)
 
       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);
     }
 }
 
@@ -253,29 +256,29 @@ static void
 print_grammar (void)
 {
   int i, j;
-  shortrule;
+  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++)
@@ -283,7 +286,7 @@ print_grammar (void)
          {
            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);
 
@@ -293,7 +296,7 @@ print_grammar (void)
                  if (*rule == token_translations[i])
                    {
                      END_TEST (65);
-                     sprintf (buffer + strlen(buffer), " %d", j);
+                     sprintf (buffer + strlen (buffer), " %d", j);
                      break;
                    }
              }
@@ -305,7 +308,7 @@ print_grammar (void)
       {
        buffer[0] = 0;
        column = strlen (tags[i]);
-       fprintf(foutput, "%s", tags[i]);
+       fprintf (foutput, "%s", tags[i]);
        END_TEST (50);
        sprintf (buffer, " (%d)", i);
 
@@ -315,14 +318,14 @@ print_grammar (void)
              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;
@@ -340,7 +343,7 @@ print_grammar (void)
        }
 
       buffer[0] = 0;
-      fprintf(foutput, "%s", tags[i]);
+      fprintf (foutput, "%s", tags[i]);
       column = strlen (tags[i]);
       sprintf (buffer, " (%d)", i);
       END_TEST (0);
@@ -348,29 +351,29 @@ print_grammar (void)
       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;
                  }
            }
index 61c22e5..970c436 100644 (file)
@@ -4,4 +4,16 @@
 
 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