From cc84fd5dc79495429d3406f9088d01f477b52a7b Mon Sep 17 00:00:00 2001 From: Akim Demaille Date: Wed, 20 Sep 2000 13:14:11 +0000 Subject: [PATCH] * src/derives.h: New file. * src/main.c, src/derives.h: Use it. Formatting changes. * src/Makefile.am (noinst_HEADERS): Adjust. --- ChangeLog | 7 ++++ po/de.po | 8 ++--- po/es.po | 8 ++--- po/et.po | 8 ++--- po/fr.po | 8 ++--- po/ja.po | 8 ++--- po/nl.po | 8 ++--- po/ru.po | 8 ++--- src/Makefile.am | 2 +- src/derives.c | 110 ++++++++++++++++++++++++++------------------------------ src/derives.h | 28 +++++++++++++++ src/main.c | 90 +++++++++++++++++++++++----------------------- 12 files changed, 159 insertions(+), 134 deletions(-) create mode 100644 src/derives.h diff --git a/ChangeLog b/ChangeLog index 1299ef5..729640e 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,12 @@ 2000-09-20 Akim Demaille + * 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 + * tests/atgeneral.m4: Update from Autoconf. * tests/calc.m4 (_AT_DATA_CALC_Y, AT_DATA_CALC_Y, _AT_CHECK_CALC) (AT_CHECK_CALC): New macros. diff --git a/po/de.po b/po/de.po index 2622851..291aae9 100644 --- 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-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 \n" "Language-Team: German \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" -#: src/derives.c:108 +#: src/derives.c:42 msgid "" "\n" "\n" @@ -121,7 +121,7 @@ msgid "" "\n" msgstr "" -#: src/derives.c:112 +#: src/derives.c:46 #, 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" -#: src/main.c:141 +#: src/main.c:139 #, fuzzy, c-format msgid "%s: internal error: %s\n" msgstr "interner Fehler, %s\n" diff --git a/po/es.po b/po/es.po index 1bbbbfa..7f5d5d8 100644 --- 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-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 \n" "Language-Team: Spanish \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" -#: src/derives.c:108 +#: src/derives.c:42 msgid "" "\n" "\n" @@ -176,7 +176,7 @@ msgstr "" "\n" "DERIVACIONES\n" -#: src/derives.c:112 +#: src/derives.c:46 #, 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" -#: src/main.c:141 +#: src/main.c:139 #, fuzzy, c-format msgid "%s: internal error: %s\n" msgstr "error interno, %s\n" diff --git a/po/et.po b/po/et.po index b4fcfee..34544e9 100644 --- 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-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 \n" "Language-Team: Estonian \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" -#: src/derives.c:108 +#: src/derives.c:42 msgid "" "\n" "\n" @@ -126,7 +126,7 @@ msgstr "" "DERIVES\n" "\n" -#: src/derives.c:112 +#: src/derives.c:46 #, c-format msgid "%s derives" msgstr "%s derives" @@ -274,7 +274,7 @@ msgstr "l 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" diff --git a/po/fr.po b/po/fr.po index 4df9c7c..97d3638 100644 --- 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-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 \n" "Language-Team: French \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" -#: src/derives.c:108 +#: src/derives.c:42 msgid "" "\n" "\n" @@ -127,7 +127,7 @@ msgstr "" "DERIVES\n" "\n" -#: src/derives.c:112 +#: src/derives.c:46 #, 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" -#: src/main.c:141 +#: src/main.c:139 #, fuzzy, c-format msgid "%s: internal error: %s\n" msgstr "erreur interne, %s\n" diff --git a/po/ja.po b/po/ja.po index c3caae6..540225a 100644 --- 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-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 \n" "Language-Team: Japanese \n" @@ -112,7 +112,7 @@ msgstr " %-4s\t 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" @@ -126,7 +126,7 @@ msgstr "" "DERIVES\n" "\n" -#: src/derives.c:112 +#: src/derives.c:46 #, c-format msgid "%s derives" msgstr "%s ¤Ï°Ê²¼¤«¤éÇÉÀ¸" @@ -257,7 +257,7 @@ 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" diff --git a/po/nl.po b/po/nl.po index 14bae60..7d4136c 100644 --- 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-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 \n" "Language-Team: Dutch \n" @@ -112,7 +112,7 @@ msgstr "" msgid " $default\treduce using rule %d (%s)\n" msgstr "" -#: src/derives.c:108 +#: src/derives.c:42 msgid "" "\n" "\n" @@ -126,7 +126,7 @@ msgstr "" "AFGELEIDEN\n" "\n" -#: src/derives.c:112 +#: src/derives.c:46 #, 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" -#: src/main.c:141 +#: src/main.c:139 #, fuzzy, c-format msgid "%s: internal error: %s\n" msgstr "interne fout, %s\n" diff --git a/po/ru.po b/po/ru.po index 8ffe63a..7a86075 100644 --- 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-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 \n" "Language-Team: Russian \n" @@ -113,7 +113,7 @@ msgstr " %-4s\t 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" @@ -127,7 +127,7 @@ msgstr "" "DERIVES\n" "\n" -#: src/derives.c:112 +#: src/derives.c:46 #, c-format msgid "%s derives" msgstr "%s ×Ù×ÏÄÉÔ" @@ -276,7 +276,7 @@ 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" diff --git a/src/Makefile.am b/src/Makefile.am index 195c40e..e7598e7 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -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 \ - state.h \ + derives.h state.h \ symtab.h system.h types.h data_DATA = bison.simple bison.hairy diff --git a/src/derives.c b/src/derives.c index a9c6905..5f8637c 100644 --- a/src/derives.c +++ b/src/derives.c @@ -1,40 +1,59 @@ /* 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; @@ -49,8 +68,8 @@ set_derives (void) 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--) @@ -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++) { @@ -80,44 +99,17 @@ set_derives (void) *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 diff --git a/src/derives.h b/src/derives.h new file mode 100644 index 0000000..d9505ab --- /dev/null +++ b/src/derives.h @@ -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)); diff --git a/src/main.c b/src/main.c index f3141d4..d53d105 100644 --- a/src/main.c +++ b/src/main.c @@ -24,8 +24,9 @@ #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 @@ -33,23 +34,21 @@ static int failure; /* 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'. */ @@ -63,59 +62,58 @@ main (int argc, char *argv[]) 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); } -/* 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. */ @@ -124,7 +122,7 @@ printable_version (int c) { static char buf[10]; if (c < ' ' || c >= '\177') - sprintf(buf, "\\%o", c); + sprintf (buf, "\\%o", c); else { buf[0] = c; @@ -139,5 +137,5 @@ void berror (const char *s) { fprintf (stderr, _("%s: internal error: %s\n"), program_name, s); - abort(); + abort (); } -- 2.7.4