* src/main.c, src/derives.h: Use it.
Formatting changes.
* src/Makefile.am (noinst_HEADERS): Adjust.
+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.
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"
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"
"\n"
msgstr ""
-#: src/derives.c:112
+#: src/derives.c:46
#, c-format
msgid "%s derives"
msgstr "%s leitet ab"
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"
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"
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"
"\n"
"DERIVACIONES\n"
-#: src/derives.c:112
+#: src/derives.c:46
#, c-format
msgid "%s derives"
msgstr "%s deriva"
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"
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"
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"
"DERIVES\n"
"\n"
-#: src/derives.c:112
+#: src/derives.c:46
#, c-format
msgid "%s derives"
msgstr "%s derives"
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"
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"
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"
"DERIVES\n"
"\n"
-#: src/derives.c:112
+#: src/derives.c:46
#, c-format
msgid "%s derives"
msgstr "%s dérive"
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"
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"
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"
"DERIVES\n"
"\n"
-#: src/derives.c:112
+#: src/derives.c:46
#, c-format
msgid "%s derives"
msgstr "%s ¤Ï°Ê²¼¤«¤éÇÉÀ¸"
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"
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"
msgid " $default\treduce using rule %d (%s)\n"
msgstr ""
-#: src/derives.c:108
+#: src/derives.c:42
msgid ""
"\n"
"\n"
"AFGELEIDEN\n"
"\n"
-#: src/derives.c:112
+#: src/derives.c:46
#, c-format
msgid "%s derives"
msgstr "%s afgeleiden"
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"
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"
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"
"DERIVES\n"
"\n"
-#: src/derives.c:112
+#: src/derives.c:46
#, c-format
msgid "%s derives"
msgstr "%s ×Ù×ÏÄÉÔ"
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"
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
/* 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"
-
-extern void set_derives PARAMS((void));
-extern void free_derives PARAMS((void));
+#include "derives.h"
#if DEBUG
-static void print_derives PARAMS((void));
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;
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--)
}
}
- 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++)
{
*q++ = -1;
}
-#ifdef DEBUG
- print_derives();
+#if DEBUG
+ print_derives ();
#endif
- FREE(dset + ntokens);
- FREE(delts);
+ FREE (dset + ntokens);
+ FREE (delts);
}
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
--- /dev/null
+/* 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));
#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
/* 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'. */
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);
- 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 */
- reduce_grammar();
+ reduce_grammar ();
/* 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. */
- generate_states();
+ generate_states ();
/* 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)
- verbose();
+ verbose ();
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
-/* 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. */
{
static char buf[10];
if (c < ' ' || c >= '\177')
- sprintf(buf, "\\%o", c);
+ sprintf (buf, "\\%o", c);
else
{
buf[0] = c;
berror (const char *s)
{
fprintf (stderr, _("%s: internal error: %s\n"), program_name, s);
- abort();
+ abort ();
}