* src/derives.h: New file.

* src/main.c, src/derives.h: Use it.
Formatting changes.
* src/Makefile.am (noinst_HEADERS): Adjust.
This commit is contained in:
Akim Demaille
2000-09-20 13:14:11 +00:00
parent db5b3a89b4
commit cc84fd5dc7
12 changed files with 158 additions and 133 deletions

View File

@@ -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> 2000-09-20 Akim Demaille <akim@epita.fr>
* tests/atgeneral.m4: Update from Autoconf. * tests/atgeneral.m4: Update from Autoconf.

View File

@@ -5,7 +5,7 @@
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: bison 1.25\n" "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" "PO-Revision-Date: 1996-10-10 17:54 MET DST\n"
"Last-Translator: Ulrich Drepper <drepper@gnu.ai.mit.edu>\n" "Last-Translator: Ulrich Drepper <drepper@gnu.ai.mit.edu>\n"
"Language-Team: German <de@li.org>\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" msgid " $default\treduce using rule %d (%s)\n"
msgstr " $default\treduziere mit Regel %d (%s)\n" msgstr " $default\treduziere mit Regel %d (%s)\n"
#: src/derives.c:108 #: src/derives.c:42
msgid "" msgid ""
"\n" "\n"
"\n" "\n"
@@ -121,7 +121,7 @@ msgid ""
"\n" "\n"
msgstr "" msgstr ""
#: src/derives.c:112 #: src/derives.c:46
#, c-format #, c-format
msgid "%s derives" msgid "%s derives"
msgstr "%s leitet ab" msgstr "%s leitet ab"
@@ -253,7 +253,7 @@ msgstr "unerwarteter Typname am Ende der Datei"
msgid "unterminated type name" msgid "unterminated type name"
msgstr "unerwarteter Typname" msgstr "unerwarteter Typname"
#: src/main.c:141 #: src/main.c:139
#, fuzzy, c-format #, fuzzy, c-format
msgid "%s: internal error: %s\n" msgid "%s: internal error: %s\n"
msgstr "interner Fehler, %s\n" msgstr "interner Fehler, %s\n"

View File

@@ -30,7 +30,7 @@
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: GNU bison 1.25\n" "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" "PO-Revision-Date: 1998-09-21 10:19+0200\n"
"Last-Translator: Nicolás García-Pedrajas <ngarcia-pedrajas@acm.org>\n" "Last-Translator: Nicolás García-Pedrajas <ngarcia-pedrajas@acm.org>\n"
"Language-Team: Spanish <es@li.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" msgid " $default\treduce using rule %d (%s)\n"
msgstr " $default\treduce usando la regla %d (%s)\n" msgstr " $default\treduce usando la regla %d (%s)\n"
#: src/derives.c:108 #: src/derives.c:42
msgid "" msgid ""
"\n" "\n"
"\n" "\n"
@@ -176,7 +176,7 @@ msgstr ""
"\n" "\n"
"DERIVACIONES\n" "DERIVACIONES\n"
#: src/derives.c:112 #: src/derives.c:46
#, c-format #, c-format
msgid "%s derives" msgid "%s derives"
msgstr "%s deriva" msgstr "%s deriva"
@@ -313,7 +313,7 @@ msgstr "nombre de tipo sin terminar al final del fichero"
msgid "unterminated type name" msgid "unterminated type name"
msgstr "nombre de tipo sin terminar" msgstr "nombre de tipo sin terminar"
#: src/main.c:141 #: src/main.c:139
#, fuzzy, c-format #, fuzzy, c-format
msgid "%s: internal error: %s\n" msgid "%s: internal error: %s\n"
msgstr "error interno, %s\n" msgstr "error interno, %s\n"

View File

@@ -5,7 +5,7 @@
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: bison 1.25\n" "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" "PO-Revision-Date: 2000-04-11 22:19+02:00\n"
"Last-Translator: Toomas Soome <tsoome@ut.ee>\n" "Last-Translator: Toomas Soome <tsoome@ut.ee>\n"
"Language-Team: Estonian <et@li.org>\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" msgid " $default\treduce using rule %d (%s)\n"
msgstr " $default\tredutseerin kasutades reeglit %d (%s)\n" msgstr " $default\tredutseerin kasutades reeglit %d (%s)\n"
#: src/derives.c:108 #: src/derives.c:42
msgid "" msgid ""
"\n" "\n"
"\n" "\n"
@@ -126,7 +126,7 @@ msgstr ""
"DERIVES\n" "DERIVES\n"
"\n" "\n"
#: src/derives.c:112 #: src/derives.c:46
#, c-format #, c-format
msgid "%s derives" msgid "%s derives"
msgstr "%s derives" msgstr "%s derives"
@@ -274,7 +274,7 @@ msgstr "l
msgid "unterminated type name" msgid "unterminated type name"
msgstr "lõpetamata tüübinimi" msgstr "lõpetamata tüübinimi"
#: src/main.c:141 #: src/main.c:139
#, c-format #, c-format
msgid "%s: internal error: %s\n" msgid "%s: internal error: %s\n"
msgstr "%s: sisemine viga: %s\n" msgstr "%s: sisemine viga: %s\n"

View File

@@ -5,7 +5,7 @@
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: bison 1.25\n" "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" "PO-Revision-Date: 1996-03-19 20:05 EST\n"
"Last-Translator: Dominique Boucher <boucherd@IRO.UMontreal.CA>\n" "Last-Translator: Dominique Boucher <boucherd@IRO.UMontreal.CA>\n"
"Language-Team: French <fr@li.org>\n" "Language-Team: French <fr@li.org>\n"
@@ -113,7 +113,7 @@ msgstr " %-4s\tr
msgid " $default\treduce using rule %d (%s)\n" msgid " $default\treduce using rule %d (%s)\n"
msgstr " $défaut\tréduction par la règle %d (%s)\n" msgstr " $défaut\tréduction par la règle %d (%s)\n"
#: src/derives.c:108 #: src/derives.c:42
msgid "" msgid ""
"\n" "\n"
"\n" "\n"
@@ -127,7 +127,7 @@ msgstr ""
"DERIVES\n" "DERIVES\n"
"\n" "\n"
#: src/derives.c:112 #: src/derives.c:46
#, c-format #, c-format
msgid "%s derives" msgid "%s derives"
msgstr "%s dérive" 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" msgid "unterminated type name"
msgstr "le nom de type ne se termine pas" msgstr "le nom de type ne se termine pas"
#: src/main.c:141 #: src/main.c:139
#, fuzzy, c-format #, fuzzy, c-format
msgid "%s: internal error: %s\n" msgid "%s: internal error: %s\n"
msgstr "erreur interne, %s\n" msgstr "erreur interne, %s\n"

View File

@@ -5,7 +5,7 @@
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: GNU bison 1.28\n" "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" "PO-Revision-Date: 1999-09-28 21:10+0900\n"
"Last-Translator: Daisuke Yamashita <yamad@mb.infoweb.ne.jp>\n" "Last-Translator: Daisuke Yamashita <yamad@mb.infoweb.ne.jp>\n"
"Language-Team: Japanese <ja@li.org>\n" "Language-Team: Japanese <ja@li.org>\n"
@@ -112,7 +112,7 @@ msgstr " %-4s\t
msgid " $default\treduce using rule %d (%s)\n" msgid " $default\treduce using rule %d (%s)\n"
msgstr " $default\t規則 %d を利用して還元 (%s)\n" msgstr " $default\t規則 %d を利用して還元 (%s)\n"
#: src/derives.c:108 #: src/derives.c:42
msgid "" msgid ""
"\n" "\n"
"\n" "\n"
@@ -126,7 +126,7 @@ msgstr ""
"DERIVES\n" "DERIVES\n"
"\n" "\n"
#: src/derives.c:112 #: src/derives.c:46
#, c-format #, c-format
msgid "%s derives" msgid "%s derives"
msgstr "%s は以下から派生" msgstr "%s は以下から派生"
@@ -257,7 +257,7 @@ msgstr "
msgid "unterminated type name" msgid "unterminated type name"
msgstr "閉じられていないタイプ名があります" msgstr "閉じられていないタイプ名があります"
#: src/main.c:141 #: src/main.c:139
#, c-format #, c-format
msgid "%s: internal error: %s\n" msgid "%s: internal error: %s\n"
msgstr "%s: 内部エラー: %s\n" msgstr "%s: 内部エラー: %s\n"

View File

@@ -5,7 +5,7 @@
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: bison 1.25\n" "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" "PO-Revision-Date: 1996-08-27 15:34 MET DST\n"
"Last-Translator: Erick Branderhorst <branderh@debian.org>\n" "Last-Translator: Erick Branderhorst <branderh@debian.org>\n"
"Language-Team: Dutch <nl@li.org>\n" "Language-Team: Dutch <nl@li.org>\n"
@@ -112,7 +112,7 @@ msgstr ""
msgid " $default\treduce using rule %d (%s)\n" msgid " $default\treduce using rule %d (%s)\n"
msgstr "" msgstr ""
#: src/derives.c:108 #: src/derives.c:42
msgid "" msgid ""
"\n" "\n"
"\n" "\n"
@@ -126,7 +126,7 @@ msgstr ""
"AFGELEIDEN\n" "AFGELEIDEN\n"
"\n" "\n"
#: src/derives.c:112 #: src/derives.c:46
#, c-format #, c-format
msgid "%s derives" msgid "%s derives"
msgstr "%s afgeleiden" msgstr "%s afgeleiden"
@@ -257,7 +257,7 @@ msgstr "niet getermineerd type naam aan het einde van bestand"
msgid "unterminated type name" msgid "unterminated type name"
msgstr "niet getermineerd type naam" msgstr "niet getermineerd type naam"
#: src/main.c:141 #: src/main.c:139
#, fuzzy, c-format #, fuzzy, c-format
msgid "%s: internal error: %s\n" msgid "%s: internal error: %s\n"
msgstr "interne fout, %s\n" msgstr "interne fout, %s\n"

View File

@@ -5,7 +5,7 @@
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: bison 1.28a\n" "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" "PO-Revision-Date: 2000-04-12 13:16+04:00\n"
"Last-Translator: Dmitry S. Sivachenko <dima@Chg.RU>\n" "Last-Translator: Dmitry S. Sivachenko <dima@Chg.RU>\n"
"Language-Team: Russian <ru@li.org>\n" "Language-Team: Russian <ru@li.org>\n"
@@ -113,7 +113,7 @@ msgstr " %-4s\t
msgid " $default\treduce using rule %d (%s)\n" msgid " $default\treduce using rule %d (%s)\n"
msgstr " $default\t×Ù×ÏÄ Ó ÉÓÐÏÌØÚÏ×ÁÎÉÅÍ ÐÒÁ×ÉÌÁ %d (%s)\n" msgstr " $default\t×Ù×ÏÄ Ó ÉÓÐÏÌØÚÏ×ÁÎÉÅÍ ÐÒÁ×ÉÌÁ %d (%s)\n"
#: src/derives.c:108 #: src/derives.c:42
msgid "" msgid ""
"\n" "\n"
"\n" "\n"
@@ -127,7 +127,7 @@ msgstr ""
"DERIVES\n" "DERIVES\n"
"\n" "\n"
#: src/derives.c:112 #: src/derives.c:46
#, c-format #, c-format
msgid "%s derives" msgid "%s derives"
msgstr "%s ×Ù×ÏÄÉÔ" msgstr "%s ×Ù×ÏÄÉÔ"
@@ -276,7 +276,7 @@ msgstr "
msgid "unterminated type name" msgid "unterminated type name"
msgstr "ÎÅÚÁËÏÎÞÅÎÎÏÅ ÉÍÑ ÔÉÐÁ" msgstr "ÎÅÚÁËÏÎÞÅÎÎÏÅ ÉÍÑ ÔÉÐÁ"
#: src/main.c:141 #: src/main.c:139
#, c-format #, c-format
msgid "%s: internal error: %s\n" msgid "%s: internal error: %s\n"
msgstr "%s: ×ÎÕÔÒÅÎÎÑÑ ÏÛÉÂËÁ: %s\n" msgstr "%s: ×ÎÕÔÒÅÎÎÑÑ ÏÛÉÂËÁ: %s\n"

View File

@@ -19,7 +19,7 @@ bison_SOURCES = LR0.c allocate.c closure.c complain.c conflicts.c \
EXTRA_bison_SOURCES = vmsgetargs.c EXTRA_bison_SOURCES = vmsgetargs.c
noinst_HEADERS = alloc.h complain.h files.h getargs.h gram.h lex.h \ 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 symtab.h system.h types.h
data_DATA = bison.simple bison.hairy data_DATA = bison.simple bison.hairy

View 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 Bison is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2, or (at your option) the Free Software Foundation; either version 2, or (at your option)
any later version. any later version.
Bison is distributed in the hope that it will be useful, Bison is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details. GNU General Public License for more details.
You should have received a copy of the GNU General Public License You should have received a copy of the GNU General Public License
along with Bison; see the file COPYING. If not, write to along with Bison; see the file COPYING. If not, write to
the Free Software Foundation, Inc., 59 Temple Place - Suite 330, the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA. */ Boston, MA 02111-1307, USA. */
/* set_derives finds, for each variable (nonterminal), which rules can derive it. /* set_derives finds, for each variable (nonterminal), which rules can
It sets up the value of derives so that derive it. It sets up the value of derives so that derives[i -
derives[i - ntokens] points to a vector of rule numbers, ntokens] points to a vector of rule numbers, terminated with -1.
terminated with -1. */ */
#include "system.h" #include "system.h"
#include "alloc.h" #include "alloc.h"
#include "types.h" #include "types.h"
#include "gram.h" #include "gram.h"
#include "derives.h"
extern void set_derives PARAMS((void));
extern void free_derives PARAMS((void));
#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 #endif
short **derives; short **derives;
@@ -49,8 +68,8 @@ set_derives (void)
register shorts **dset; register shorts **dset;
register shorts *delts; register shorts *delts;
dset = NEW2(nvars, shorts *) - ntokens; dset = NEW2 (nvars, shorts *) - ntokens;
delts = NEW2(nrules + 1, shorts); delts = NEW2 (nrules + 1, shorts);
p = delts; p = delts;
for (i = nrules; i > 0; i--) for (i = nrules; i > 0; i--)
@@ -65,8 +84,8 @@ set_derives (void)
} }
} }
derives = NEW2(nvars, short *) - ntokens; derives = NEW2 (nvars, short *) - ntokens;
q = NEW2(nvars + nrules, short); 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 #if DEBUG
print_derives(); print_derives ();
#endif #endif
FREE(dset + ntokens); FREE (dset + ntokens);
FREE(delts); FREE (delts);
} }
void void
free_derives (void) free_derives (void)
{ {
FREE(derives[ntokens]); FREE (derives[ntokens]);
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');
}
#endif

28
src/derives.h Normal file
View File

@@ -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));

View File

@@ -24,8 +24,9 @@
#include "getargs.h" #include "getargs.h"
#include "files.h" #include "files.h"
#include "complain.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. */ /* Nonzero means failure has been detected; don't write a parser file. */
static int failure; static int failure;
#endif #endif
@@ -33,23 +34,21 @@ static int failure;
/* The name this program was run with, for messages. */ /* The name this program was run with, for messages. */
char *program_name; char *program_name;
extern char *printable_version PARAMS((int)); extern char *printable_version PARAMS ((int));
extern void berror PARAMS((const char *)); extern void berror PARAMS ((const char *));
extern void openfiles PARAMS((void)); extern void openfiles PARAMS ((void));
extern void reader PARAMS((void)); extern void reader PARAMS ((void));
extern void reduce_grammar PARAMS((void)); extern void reduce_grammar PARAMS ((void));
extern void set_derives PARAMS((void)); extern void set_nullable PARAMS ((void));
extern void free_derives PARAMS((void)); extern void free_nullable PARAMS ((void));
extern void set_nullable PARAMS((void)); extern void generate_states PARAMS ((void));
extern void free_nullable PARAMS((void)); extern void lalr PARAMS ((void));
extern void generate_states PARAMS((void)); extern void initialize_conflicts PARAMS ((void));
extern void lalr PARAMS((void)); extern void finalize_conflicts PARAMS ((void));
extern void initialize_conflicts PARAMS((void)); extern void verbose PARAMS ((void));
extern void finalize_conflicts PARAMS((void)); extern void terse PARAMS ((void));
extern void verbose PARAMS((void)); extern void output 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); textdomain (PACKAGE);
lineno = 0; 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. /* Read the input. Copy some parts of it to FGUARD, FACTION, FTABLE
In file reader.c. and FATTRS. In file reader.c. The other parts are recorded in
The other parts are recorded in the grammar; see gram.h. */ the grammar; see gram.h. */
reader (); reader ();
if (complain_message_count) if (complain_message_count)
exit (1); exit (1);
/* find useless nonterminals and productions and reduce the grammar. In /* find useless nonterminals and productions and reduce the grammar. In
file reduce.c */ 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_derives ();
set_nullable(); set_nullable ();
/* convert to nondeterministic finite state machine. In file LR0. /* convert to nondeterministic finite state machine. In file LR0.
See state.h for more info. */ 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 /* Find and record any conflicts: places where one token of
enough to disambiguate the parsing. In file conflicts. lookahead is not enough to disambiguate the parsing. In file
Also resolve s/r conflicts based on precedence declarations. */ conflicts. Also resolve s/r conflicts based on precedence
initialize_conflicts(); 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 the tables and the parser to ftable. In file output. */
output(); output ();
finalize_conflicts(); finalize_conflicts ();
free_nullable(); free_nullable ();
free_derives(); free_derives ();
exit (complain_message_count ? 1 : 0); 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: /* Return a string containing a printable version of C:
either C itself, or the corresponding \DDD code. */ either C itself, or the corresponding \DDD code. */
@@ -124,7 +122,7 @@ printable_version (int c)
{ {
static char buf[10]; static char buf[10];
if (c < ' ' || c >= '\177') if (c < ' ' || c >= '\177')
sprintf(buf, "\\%o", c); sprintf (buf, "\\%o", c);
else else
{ {
buf[0] = c; buf[0] = c;
@@ -139,5 +137,5 @@ void
berror (const char *s) berror (const char *s)
{ {
fprintf (stderr, _("%s: internal error: %s\n"), program_name, s); fprintf (stderr, _("%s: internal error: %s\n"), program_name, s);
abort(); abort ();
} }