* src/derives.h: New file.
authorAkim Demaille <akim@epita.fr>
Wed, 20 Sep 2000 13:14:11 +0000 (13:14 +0000)
committerAkim Demaille <akim@epita.fr>
Wed, 20 Sep 2000 13:14:11 +0000 (13:14 +0000)
* src/main.c, src/derives.h: Use it.
Formatting changes.
* 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/Makefile.am
src/derives.c
src/derives.h [new file with mode: 0644]
src/main.c

index 1299ef52514d129a8c0da22041de0b2e4addbb76..729640e3e944fa7bd1ce5fa333e81653c5814e56 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,10 @@
+2000-09-20  Akim Demaille  <akim@epita.fr>
+
+       * src/derives.h: New file.
+       * src/main.c, src/derives.h: Use it.
+       Formatting changes.
+       * src/Makefile.am (noinst_HEADERS): Adjust.
+
 2000-09-20  Akim Demaille  <akim@epita.fr>
 
        * tests/atgeneral.m4: Update from Autoconf.
 2000-09-20  Akim Demaille  <akim@epita.fr>
 
        * tests/atgeneral.m4: Update from Autoconf.
index 26228516541558212ae178802117fc1c72ea7ec7..291aae9721cc726f03d7a11bfbccdba27c585d39 100644 (file)
--- a/po/de.po
+++ b/po/de.po
@@ -5,7 +5,7 @@
 msgid ""
 msgstr ""
 "Project-Id-Version: bison 1.25\n"
 msgid ""
 msgstr ""
 "Project-Id-Version: bison 1.25\n"
-"POT-Creation-Date: 2000-09-19 20:18+0200\n"
+"POT-Creation-Date: 2000-09-20 14:50+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"
 "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"
@@ -112,7 +112,7 @@ msgstr "    %-4s\treduziere mit Tegel %d (%s)\n"
 msgid "    $default\treduce using rule %d (%s)\n"
 msgstr "    $default\treduziere mit Regel %d (%s)\n"
 
 msgid "    $default\treduce using rule %d (%s)\n"
 msgstr "    $default\treduziere mit Regel %d (%s)\n"
 
-#: src/derives.c:108
+#: src/derives.c:42
 msgid ""
 "\n"
 "\n"
 msgid ""
 "\n"
 "\n"
@@ -121,7 +121,7 @@ msgid ""
 "\n"
 msgstr ""
 
 "\n"
 msgstr ""
 
-#: src/derives.c:112
+#: src/derives.c:46
 #, c-format
 msgid "%s derives"
 msgstr "%s leitet ab"
 #, c-format
 msgid "%s derives"
 msgstr "%s leitet ab"
@@ -253,7 +253,7 @@ msgstr "unerwarteter Typname am Ende der Datei"
 msgid "unterminated type name"
 msgstr "unerwarteter Typname"
 
 msgid "unterminated type name"
 msgstr "unerwarteter Typname"
 
-#: src/main.c:141
+#: src/main.c:139
 #, fuzzy, c-format
 msgid "%s: internal error: %s\n"
 msgstr "interner Fehler, %s\n"
 #, fuzzy, c-format
 msgid "%s: internal error: %s\n"
 msgstr "interner Fehler, %s\n"
index 1bbbbfa23266c8679b24148ba803dcf09a08a1fe..7f5d5d86b44a6c66601d8884a73ca8cd9144b343 100644 (file)
--- a/po/es.po
+++ b/po/es.po
@@ -30,7 +30,7 @@
 msgid ""
 msgstr ""
 "Project-Id-Version: GNU bison 1.25\n"
 msgid ""
 msgstr ""
 "Project-Id-Version: GNU bison 1.25\n"
-"POT-Creation-Date: 2000-09-19 20:18+0200\n"
+"POT-Creation-Date: 2000-09-20 14:50+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"
 "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"
@@ -163,7 +163,7 @@ msgstr "    %-4s\treduce usando la regla  %d (%s)\n"
 msgid "    $default\treduce using rule %d (%s)\n"
 msgstr "    $default\treduce usando la regla %d (%s)\n"
 
 msgid "    $default\treduce using rule %d (%s)\n"
 msgstr "    $default\treduce usando la regla %d (%s)\n"
 
-#: src/derives.c:108
+#: src/derives.c:42
 msgid ""
 "\n"
 "\n"
 msgid ""
 "\n"
 "\n"
@@ -176,7 +176,7 @@ msgstr ""
 "\n"
 "DERIVACIONES\n"
 
 "\n"
 "DERIVACIONES\n"
 
-#: src/derives.c:112
+#: src/derives.c:46
 #, c-format
 msgid "%s derives"
 msgstr "%s deriva"
 #, c-format
 msgid "%s derives"
 msgstr "%s deriva"
@@ -313,7 +313,7 @@ msgstr "nombre de tipo sin terminar al final del fichero"
 msgid "unterminated type name"
 msgstr "nombre de tipo sin terminar"
 
 msgid "unterminated type name"
 msgstr "nombre de tipo sin terminar"
 
-#: src/main.c:141
+#: src/main.c:139
 #, fuzzy, c-format
 msgid "%s: internal error: %s\n"
 msgstr "error interno, %s\n"
 #, fuzzy, c-format
 msgid "%s: internal error: %s\n"
 msgstr "error interno, %s\n"
index b4fcfeecf2b6d9c726f1151c4caf658ad32e8656..34544e9266efbe1871557bf627727abb33b6fece 100644 (file)
--- a/po/et.po
+++ b/po/et.po
@@ -5,7 +5,7 @@
 msgid ""
 msgstr ""
 "Project-Id-Version: bison 1.25\n"
 msgid ""
 msgstr ""
 "Project-Id-Version: bison 1.25\n"
-"POT-Creation-Date: 2000-09-19 20:18+0200\n"
+"POT-Creation-Date: 2000-09-20 14:50+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"
 "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"
@@ -112,7 +112,7 @@ msgstr "    %-4s\tredutseerin kasutades reeglit %d (%s)\n"
 msgid "    $default\treduce using rule %d (%s)\n"
 msgstr "    $default\tredutseerin kasutades reeglit %d (%s)\n"
 
 msgid "    $default\treduce using rule %d (%s)\n"
 msgstr "    $default\tredutseerin kasutades reeglit %d (%s)\n"
 
-#: src/derives.c:108
+#: src/derives.c:42
 msgid ""
 "\n"
 "\n"
 msgid ""
 "\n"
 "\n"
@@ -126,7 +126,7 @@ msgstr ""
 "DERIVES\n"
 "\n"
 
 "DERIVES\n"
 "\n"
 
-#: src/derives.c:112
+#: src/derives.c:46
 #, c-format
 msgid "%s derives"
 msgstr "%s derives"
 #, c-format
 msgid "%s derives"
 msgstr "%s derives"
@@ -274,7 +274,7 @@ msgstr "l
 msgid "unterminated type name"
 msgstr "lõpetamata tüübinimi"
 
 msgid "unterminated type name"
 msgstr "lõpetamata tüübinimi"
 
-#: src/main.c:141
+#: src/main.c:139
 #, c-format
 msgid "%s: internal error: %s\n"
 msgstr "%s: sisemine viga: %s\n"
 #, c-format
 msgid "%s: internal error: %s\n"
 msgstr "%s: sisemine viga: %s\n"
index 4df9c7c79f9e697aa9c00611b651d06c280b158a..97d36383e1e890ab60791d9d4eec256566af0e87 100644 (file)
--- a/po/fr.po
+++ b/po/fr.po
@@ -5,7 +5,7 @@
 msgid ""
 msgstr ""
 "Project-Id-Version: bison 1.25\n"
 msgid ""
 msgstr ""
 "Project-Id-Version: bison 1.25\n"
-"POT-Creation-Date: 2000-09-19 20:18+0200\n"
+"POT-Creation-Date: 2000-09-20 14:50+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"
 "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"
@@ -113,7 +113,7 @@ msgstr "    %-4s\tr
 msgid "    $default\treduce using rule %d (%s)\n"
 msgstr "    $défaut\tréduction par la règle %d (%s)\n"
 
 msgid "    $default\treduce using rule %d (%s)\n"
 msgstr "    $défaut\tréduction par la règle %d (%s)\n"
 
-#: src/derives.c:108
+#: src/derives.c:42
 msgid ""
 "\n"
 "\n"
 msgid ""
 "\n"
 "\n"
@@ -127,7 +127,7 @@ msgstr ""
 "DERIVES\n"
 "\n"
 
 "DERIVES\n"
 "\n"
 
-#: src/derives.c:112
+#: src/derives.c:46
 #, c-format
 msgid "%s derives"
 msgstr "%s dérive"
 #, c-format
 msgid "%s derives"
 msgstr "%s dérive"
@@ -258,7 +258,7 @@ msgstr "le nom de type ne se termine pas avant la fin de fichier"
 msgid "unterminated type name"
 msgstr "le nom de type ne se termine pas"
 
 msgid "unterminated type name"
 msgstr "le nom de type ne se termine pas"
 
-#: src/main.c:141
+#: src/main.c:139
 #, fuzzy, c-format
 msgid "%s: internal error: %s\n"
 msgstr "erreur interne, %s\n"
 #, fuzzy, c-format
 msgid "%s: internal error: %s\n"
 msgstr "erreur interne, %s\n"
index c3caae63548898e000c552436f0e5cd357c8bf18..540225a5bd5293dbb65138dbb6b01d6955d3366e 100644 (file)
--- a/po/ja.po
+++ b/po/ja.po
@@ -5,7 +5,7 @@
 msgid ""
 msgstr ""
 "Project-Id-Version: GNU bison 1.28\n"
 msgid ""
 msgstr ""
 "Project-Id-Version: GNU bison 1.28\n"
-"POT-Creation-Date: 2000-09-19 20:18+0200\n"
+"POT-Creation-Date: 2000-09-20 14:50+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"
 "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"
@@ -112,7 +112,7 @@ msgstr "    %-4s\t
 msgid "    $default\treduce using rule %d (%s)\n"
 msgstr "    $default\tµ¬Â§ %d ¤òÍøÍѤ·¤Æ´Ô¸µ (%s)\n"
 
 msgid "    $default\treduce using rule %d (%s)\n"
 msgstr "    $default\tµ¬Â§ %d ¤òÍøÍѤ·¤Æ´Ô¸µ (%s)\n"
 
-#: src/derives.c:108
+#: src/derives.c:42
 msgid ""
 "\n"
 "\n"
 msgid ""
 "\n"
 "\n"
@@ -126,7 +126,7 @@ msgstr ""
 "DERIVES\n"
 "\n"
 
 "DERIVES\n"
 "\n"
 
-#: src/derives.c:112
+#: src/derives.c:46
 #, c-format
 msgid "%s derives"
 msgstr "%s ¤Ï°Ê²¼¤«¤éÇÉÀ¸"
 #, c-format
 msgid "%s derives"
 msgstr "%s ¤Ï°Ê²¼¤«¤éÇÉÀ¸"
@@ -257,7 +257,7 @@ msgstr "
 msgid "unterminated type name"
 msgstr "ÊĤ¸¤é¤ì¤Æ¤¤¤Ê¤¤¥¿¥¤¥×̾¤¬¤¢¤ê¤Þ¤¹"
 
 msgid "unterminated type name"
 msgstr "ÊĤ¸¤é¤ì¤Æ¤¤¤Ê¤¤¥¿¥¤¥×̾¤¬¤¢¤ê¤Þ¤¹"
 
-#: src/main.c:141
+#: src/main.c:139
 #, c-format
 msgid "%s: internal error: %s\n"
 msgstr "%s: ÆâÉô¥¨¥é¡¼: %s\n"
 #, c-format
 msgid "%s: internal error: %s\n"
 msgstr "%s: ÆâÉô¥¨¥é¡¼: %s\n"
index 14bae6089dee4ad8f8f3fa0d3eb4e9bd9db26678..7d4136c8079c2678fbc0299a55609d8f51b18ae6 100644 (file)
--- a/po/nl.po
+++ b/po/nl.po
@@ -5,7 +5,7 @@
 msgid ""
 msgstr ""
 "Project-Id-Version: bison 1.25\n"
 msgid ""
 msgstr ""
 "Project-Id-Version: bison 1.25\n"
-"POT-Creation-Date: 2000-09-19 20:18+0200\n"
+"POT-Creation-Date: 2000-09-20 14:50+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"
 "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"
@@ -112,7 +112,7 @@ msgstr ""
 msgid "    $default\treduce using rule %d (%s)\n"
 msgstr ""
 
 msgid "    $default\treduce using rule %d (%s)\n"
 msgstr ""
 
-#: src/derives.c:108
+#: src/derives.c:42
 msgid ""
 "\n"
 "\n"
 msgid ""
 "\n"
 "\n"
@@ -126,7 +126,7 @@ msgstr ""
 "AFGELEIDEN\n"
 "\n"
 
 "AFGELEIDEN\n"
 "\n"
 
-#: src/derives.c:112
+#: src/derives.c:46
 #, c-format
 msgid "%s derives"
 msgstr "%s afgeleiden"
 #, c-format
 msgid "%s derives"
 msgstr "%s afgeleiden"
@@ -257,7 +257,7 @@ msgstr "niet getermineerd type naam aan het einde van bestand"
 msgid "unterminated type name"
 msgstr "niet getermineerd type naam"
 
 msgid "unterminated type name"
 msgstr "niet getermineerd type naam"
 
-#: src/main.c:141
+#: src/main.c:139
 #, fuzzy, c-format
 msgid "%s: internal error: %s\n"
 msgstr "interne fout, %s\n"
 #, fuzzy, c-format
 msgid "%s: internal error: %s\n"
 msgstr "interne fout, %s\n"
index 8ffe63adc8d069b9abdbdf4ddeaa99ebf238ca78..7a86075422c242dbecfa186e1ba076e857d5d6a8 100644 (file)
--- a/po/ru.po
+++ b/po/ru.po
@@ -5,7 +5,7 @@
 msgid ""
 msgstr ""
 "Project-Id-Version: bison 1.28a\n"
 msgid ""
 msgstr ""
 "Project-Id-Version: bison 1.28a\n"
-"POT-Creation-Date: 2000-09-19 20:18+0200\n"
+"POT-Creation-Date: 2000-09-20 14:50+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"
 "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"
@@ -113,7 +113,7 @@ msgstr "    %-4s\t
 msgid "    $default\treduce using rule %d (%s)\n"
 msgstr "    $default\t×Ù×ÏÄ Ó ÉÓÐÏÌØÚÏ×ÁÎÉÅÍ ÐÒÁ×ÉÌÁ %d (%s)\n"
 
 msgid "    $default\treduce using rule %d (%s)\n"
 msgstr "    $default\t×Ù×ÏÄ Ó ÉÓÐÏÌØÚÏ×ÁÎÉÅÍ ÐÒÁ×ÉÌÁ %d (%s)\n"
 
-#: src/derives.c:108
+#: src/derives.c:42
 msgid ""
 "\n"
 "\n"
 msgid ""
 "\n"
 "\n"
@@ -127,7 +127,7 @@ msgstr ""
 "DERIVES\n"
 "\n"
 
 "DERIVES\n"
 "\n"
 
-#: src/derives.c:112
+#: src/derives.c:46
 #, c-format
 msgid "%s derives"
 msgstr "%s ×Ù×ÏÄÉÔ"
 #, c-format
 msgid "%s derives"
 msgstr "%s ×Ù×ÏÄÉÔ"
@@ -276,7 +276,7 @@ msgstr "
 msgid "unterminated type name"
 msgstr "ÎÅÚÁËÏÎÞÅÎÎÏÅ ÉÍÑ ÔÉÐÁ"
 
 msgid "unterminated type name"
 msgstr "ÎÅÚÁËÏÎÞÅÎÎÏÅ ÉÍÑ ÔÉÐÁ"
 
-#: src/main.c:141
+#: src/main.c:139
 #, c-format
 msgid "%s: internal error: %s\n"
 msgstr "%s: ×ÎÕÔÒÅÎÎÑÑ ÏÛÉÂËÁ: %s\n"
 #, c-format
 msgid "%s: internal error: %s\n"
 msgstr "%s: ×ÎÕÔÒÅÎÎÑÑ ÏÛÉÂËÁ: %s\n"
index 195c40e6fee7e889d2e6f963144513d6d2e08be1..e7598e7bba624e40692766d0328a29d5de280336 100644 (file)
@@ -19,7 +19,7 @@ bison_SOURCES = LR0.c allocate.c closure.c complain.c conflicts.c     \
 EXTRA_bison_SOURCES = vmsgetargs.c
 
 noinst_HEADERS = alloc.h complain.h files.h getargs.h gram.h lex.h \
 EXTRA_bison_SOURCES = vmsgetargs.c
 
 noinst_HEADERS = alloc.h complain.h files.h getargs.h gram.h lex.h \
state.h       \
derives.h state.h     \
  symtab.h system.h types.h
 
 data_DATA = bison.simple bison.hairy
  symtab.h system.h types.h
 
 data_DATA = bison.simple bison.hairy
index a9c6905cc26df7c57eac39c5a482c1d05271995b..5f8637ca382a59753d710fbe829a74a3f3bd32cb 100644 (file)
@@ -1,40 +1,59 @@
 /* Match rules with nonterminals for bison,
 /* Match rules with nonterminals for bison,
-   Copyright (C) 1984, 1989 Free Software Foundation, Inc.
+   Copyright (C) 1984, 1989, 2000 Free Software Foundation, Inc.
 
 
-This file is part of Bison, the GNU Compiler Compiler.
+   This file is part of Bison, the GNU Compiler Compiler.
 
 
-Bison is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
-any later version.
+   Bison is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 2, or (at your option)
+   any later version.
 
 
-Bison is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-GNU General Public License for more details.
+   Bison is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
 
 
-You should have received a copy of the GNU General Public License
-along with Bison; see the file COPYING.  If not, write to
-the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-Boston, MA 02111-1307, USA.  */
+   You should have received a copy of the GNU General Public License
+   along with Bison; see the file COPYING.  If not, write to
+   the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+   Boston, MA 02111-1307, USA.  */
 
 
 
 
-/* set_derives finds, for each variable (nonterminal), which rules can derive it.
-   It sets up the value of derives so that
-   derives[i - ntokens] points to a vector of rule numbers,
-   terminated with -1.  */
+/* set_derives finds, for each variable (nonterminal), which rules can
+   derive it.  It sets up the value of derives so that derives[i -
+   ntokens] points to a vector of rule numbers, terminated with -1.
+   */
 
 #include "system.h"
 #include "alloc.h"
 #include "types.h"
 #include "gram.h"
 
 #include "system.h"
 #include "alloc.h"
 #include "types.h"
 #include "gram.h"
-
-extern void set_derives PARAMS((void));
-extern void free_derives PARAMS((void));
+#include "derives.h"
 
 #if DEBUG
 
 #if DEBUG
-static void print_derives PARAMS((void));
 extern char **tags;
 extern char **tags;
+
+static void
+print_derives (void)
+{
+  register int i;
+  register short *sp;
+
+  printf (_("\n\n\nDERIVES\n\n"));
+
+  for (i = ntokens; i < nsyms; i++)
+    {
+      printf (_("%s derives"), tags[i]);
+      for (sp = derives[i]; *sp > 0; sp++)
+       {
+         printf ("  %d", *sp);
+       }
+      putchar ('\n');
+    }
+
+  putchar ('\n');
+}
+
 #endif
 
 short **derives;
 #endif
 
 short **derives;
@@ -49,8 +68,8 @@ set_derives (void)
   register shorts **dset;
   register shorts *delts;
 
   register shorts **dset;
   register shorts *delts;
 
-  dset = NEW2(nvars, shorts *) - ntokens;
-  delts = NEW2(nrules + 1, shorts);
+  dset = NEW2 (nvars, shorts *) - ntokens;
+  delts = NEW2 (nrules + 1, shorts);
 
   p = delts;
   for (i = nrules; i > 0; i--)
 
   p = delts;
   for (i = nrules; i > 0; i--)
@@ -65,8 +84,8 @@ set_derives (void)
        }
     }
 
        }
     }
 
-  derives = NEW2(nvars, short *) - ntokens;
-  q = NEW2(nvars + nrules, short);
+  derives = NEW2 (nvars, short *) - ntokens;
+  q = NEW2 (nvars + nrules, short);
 
   for (i = ntokens; i < nsyms; i++)
     {
 
   for (i = ntokens; i < nsyms; i++)
     {
@@ -80,44 +99,17 @@ set_derives (void)
       *q++ = -1;
     }
 
       *q++ = -1;
     }
 
-#ifdef DEBUG
-  print_derives();
+#if DEBUG
+  print_derives ();
 #endif
 
 #endif
 
-  FREE(dset + ntokens);
-  FREE(delts);
+  FREE (dset + ntokens);
+  FREE (delts);
 }
 
 void
 free_derives (void)
 {
 }
 
 void
 free_derives (void)
 {
-  FREE(derives[ntokens]);
-  FREE(derives + ntokens);
-}
-
-
-
-#ifdef DEBUG
-
-static void
-print_derives (void)
-{
-  register int i;
-  register short *sp;
-
-  printf(_("\n\n\nDERIVES\n\n"));
-
-  for (i = ntokens; i < nsyms; i++)
-    {
-      printf(_("%s derives"), tags[i]);
-      for (sp = derives[i]; *sp > 0; sp++)
-       {
-         printf("  %d", *sp);
-       }
-      putchar('\n');
-    }
-
-  putchar('\n');
+  FREE (derives[ntokens]);
+  FREE (derives + ntokens);
 }
 }
-
-#endif
diff --git a/src/derives.h b/src/derives.h
new file mode 100644 (file)
index 0000000..d9505ab
--- /dev/null
@@ -0,0 +1,28 @@
+/* Match rules with nonterminals 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.  */
+
+
+/* set_derives finds, for each variable (nonterminal), which rules can
+   derive it.  It sets up the value of derives so that derives[i -
+   ntokens] points to a vector of rule numbers, terminated with -1.
+   */
+
+void set_derives PARAMS((void));
+void free_derives PARAMS((void));
index f3141d4ca3fcb24353e0c83f88ff43cf9d2a73e7..d53d105fd776e99379345c010eabd29aa6d72160 100644 (file)
@@ -24,8 +24,9 @@
 #include "getargs.h"
 #include "files.h"
 #include "complain.h"
 #include "getargs.h"
 #include "files.h"
 #include "complain.h"
+#include "derives.h"
 
 
-#if 0                           /* XXX currently unused.  */
+#if 0                          /* XXX currently unused.  */
 /* Nonzero means failure has been detected; don't write a parser file.  */
 static int failure;
 #endif
 /* Nonzero means failure has been detected; don't write a parser file.  */
 static int failure;
 #endif
@@ -33,23 +34,21 @@ static int failure;
 /* The name this program was run with, for messages.  */
 char *program_name;
 
 /* The name this program was run with, for messages.  */
 char *program_name;
 
-extern char *printable_version PARAMS((int));
-extern void berror PARAMS((const char *));
-
-extern void openfiles PARAMS((void));
-extern void reader PARAMS((void));
-extern void reduce_grammar PARAMS((void));
-extern void set_derives PARAMS((void));
-extern void free_derives PARAMS((void));
-extern void set_nullable PARAMS((void));
-extern void free_nullable PARAMS((void));
-extern void generate_states PARAMS((void));
-extern void lalr PARAMS((void));
-extern void initialize_conflicts PARAMS((void));
-extern void finalize_conflicts PARAMS((void));
-extern void verbose PARAMS((void));
-extern void terse PARAMS((void));
-extern void output PARAMS((void));
+extern char *printable_version PARAMS ((int));
+extern void berror PARAMS ((const char *));
+
+extern void openfiles PARAMS ((void));
+extern void reader PARAMS ((void));
+extern void reduce_grammar PARAMS ((void));
+extern void set_nullable PARAMS ((void));
+extern void free_nullable PARAMS ((void));
+extern void generate_states PARAMS ((void));
+extern void lalr PARAMS ((void));
+extern void initialize_conflicts PARAMS ((void));
+extern void finalize_conflicts PARAMS ((void));
+extern void verbose PARAMS ((void));
+extern void terse PARAMS ((void));
+extern void output PARAMS ((void));
 
 
 /* VMS complained about using `int'.  */
 
 
 /* VMS complained about using `int'.  */
@@ -63,59 +62,58 @@ main (int argc, char *argv[])
   textdomain (PACKAGE);
 
   lineno = 0;
   textdomain (PACKAGE);
 
   lineno = 0;
-  getargs(argc, argv);
+  getargs (argc, argv);
 
 
-  /* Be ready to clean up if we exit.*/
+  /* Be ready to clean up if we exit. */
   atexit (done);
 
   atexit (done);
 
-  openfiles();
+  openfiles ();
 
 
-  /* read the input.  Copy some parts of it to fguard, faction, ftable and fattrs.
-     In file reader.c.
-     The other parts are recorded in the grammar; see gram.h.  */
+  /* Read the input.  Copy some parts of it to FGUARD, FACTION, FTABLE
+     and FATTRS.  In file reader.c.  The other parts are recorded in
+     the grammar; see gram.h.  */
   reader ();
   if (complain_message_count)
     exit (1);
 
   /* find useless nonterminals and productions and reduce the grammar.  In
      file reduce.c */
   reader ();
   if (complain_message_count)
     exit (1);
 
   /* find useless nonterminals and productions and reduce the grammar.  In
      file reduce.c */
-  reduce_grammar();
+  reduce_grammar ();
 
   /* record other info about the grammar.  In files derives and nullable.  */
 
   /* record other info about the grammar.  In files derives and nullable.  */
-  set_derives();
-  set_nullable();
+  set_derives ();
+  set_nullable ();
 
   /* convert to nondeterministic finite state machine.  In file LR0.
      See state.h for more info.  */
 
   /* convert to nondeterministic finite state machine.  In file LR0.
      See state.h for more info.  */
-  generate_states();
+  generate_states ();
 
   /* make it deterministic.  In file lalr.  */
 
   /* make it deterministic.  In file lalr.  */
-  lalr();
+  lalr ();
 
 
-  /* Find and record any conflicts: places where one token of lookahead is not
-     enough to disambiguate the parsing.  In file conflicts.
-     Also resolve s/r conflicts based on precedence declarations.  */
-  initialize_conflicts();
+  /* Find and record any conflicts: places where one token of
+     lookahead is not enough to disambiguate the parsing.  In file
+     conflicts.  Also resolve s/r conflicts based on precedence
+     declarations.  */
+  initialize_conflicts ();
 
 
-  /* print information about results, if requested.  In file print. */
+  /* Print information about results, if requested.  In file print.
+     */
   if (verboseflag)
   if (verboseflag)
-    verbose();
+    verbose ();
   else
   else
-    terse();
+    terse ();
 
 
-  /* output the tables and the parser to ftable.  In file output. */
-  output();
+  /* Output the tables and the parser to ftable.  In file output.  */
+  output ();
 
 
-  finalize_conflicts();
-  free_nullable();
-  free_derives();
+  finalize_conflicts ();
+  free_nullable ();
+  free_derives ();
 
   exit (complain_message_count ? 1 : 0);
 }
 \f
 
   exit (complain_message_count ? 1 : 0);
 }
 \f
-/* functions to report errors which prevent a parser from being generated */
-
-
 /* Return a string containing a printable version of C:
    either C itself, or the corresponding \DDD code.  */
 
 /* Return a string containing a printable version of C:
    either C itself, or the corresponding \DDD code.  */
 
@@ -124,7 +122,7 @@ printable_version (int c)
 {
   static char buf[10];
   if (c < ' ' || c >= '\177')
 {
   static char buf[10];
   if (c < ' ' || c >= '\177')
-    sprintf(buf, "\\%o", c);
+    sprintf (buf, "\\%o", c);
   else
     {
       buf[0] = c;
   else
     {
       buf[0] = c;
@@ -139,5 +137,5 @@ void
 berror (const char *s)
 {
   fprintf (stderr, _("%s: internal error: %s\n"), program_name, s);
 berror (const char *s)
 {
   fprintf (stderr, _("%s: internal error: %s\n"), program_name, s);
-  abort();
+  abort ();
 }
 }