]> git.saurik.com Git - bison.git/blame - src/main.c
* src/main.c (main): Standardize.
[bison.git] / src / main.c
CommitLineData
54bd0db4 1/* Top level entry point of bison,
aa7815f5 2 Copyright 1984, 1986, 1989, 1992, 1995, 2000
ceed8467 3 Free Software Foundation, Inc.
54bd0db4 4
e87b5700 5 This file is part of Bison, the GNU Compiler Compiler.
54bd0db4 6
e87b5700
AD
7 Bison is free software; you can redistribute it and/or modify
8 it under the terms of the GNU General Public License as published by
9 the Free Software Foundation; either version 2, or (at your option)
10 any later version.
54bd0db4 11
e87b5700
AD
12 Bison is distributed in the hope that it will be useful,
13 but WITHOUT ANY WARRANTY; without even the implied warranty of
14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 GNU General Public License for more details.
54bd0db4 16
e87b5700
AD
17 You should have received a copy of the GNU General Public License
18 along with Bison; see the file COPYING. If not, write to
19 the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
20 Boston, MA 02111-1307, USA. */
54bd0db4
RS
21
22
54bd0db4 23#include "system.h"
ceed8467 24#include "getargs.h"
a0f6b076
AD
25#include "files.h"
26#include "complain.h"
cc84fd5d 27#include "derives.h"
6c89f1c1 28#include "output.h"
a70083a3
AD
29#include "reader.h"
30#include "lalr.h"
015acc48 31#include "reduce.h"
3519ec76 32#include "nullable.h"
07a58c13 33#include "print.h"
403b315b 34#include "LR0.h"
d7913476 35#include "conflicts.h"
c4b66126 36#include "print_graph.h"
8f451ef7 37#include "macrotab.h"
54bd0db4 38
a98ad01e 39/* The name this program was run with, for messages. */
54bd0db4
RS
40char *program_name;
41
d019d655
AD
42extern void berror PARAMS((const char *));
43
54bd0db4 44int
d2729d44 45main (int argc, char *argv[])
54bd0db4
RS
46{
47 program_name = argv[0];
29340571
RS
48 setlocale (LC_ALL, "");
49 bindtextdomain (PACKAGE, LOCALEDIR);
50 textdomain (PACKAGE);
51
54bd0db4 52 lineno = 0;
cc84fd5d 53 getargs (argc, argv);
a0f6b076 54
6f43b113 55 macro_init ();
8963a27b 56 open_files ();
54bd0db4 57
cc84fd5d
AD
58 /* Read the input. Copy some parts of it to FGUARD, FACTION, FTABLE
59 and FATTRS. In file reader.c. The other parts are recorded in
60 the grammar; see gram.h. */
a0f6b076
AD
61 reader ();
62 if (complain_message_count)
63 exit (1);
54bd0db4
RS
64
65 /* find useless nonterminals and productions and reduce the grammar. In
66 file reduce.c */
cc84fd5d 67 reduce_grammar ();
54bd0db4
RS
68
69 /* record other info about the grammar. In files derives and nullable. */
cc84fd5d
AD
70 set_derives ();
71 set_nullable ();
54bd0db4
RS
72
73 /* convert to nondeterministic finite state machine. In file LR0.
74 See state.h for more info. */
cc84fd5d 75 generate_states ();
54bd0db4
RS
76
77 /* make it deterministic. In file lalr. */
cc84fd5d 78 lalr ();
54bd0db4 79
cc84fd5d
AD
80 /* Find and record any conflicts: places where one token of
81 lookahead is not enough to disambiguate the parsing. In file
82 conflicts. Also resolve s/r conflicts based on precedence
83 declarations. */
84 initialize_conflicts ();
54bd0db4 85
07a58c13
AD
86 /* Print information about results, if requested. */
87 print_results ();
54bd0db4 88
e8cb70b9 89 /* Output the VCG graph. */
c4b66126
AD
90 print_graph ();
91
cc84fd5d
AD
92 /* Output the tables and the parser to ftable. In file output. */
93 output ();
a0f6b076 94
cc84fd5d
AD
95 finalize_conflicts ();
96 free_nullable ();
97 free_derives ();
4a120d45 98
d8880f69
AD
99 if (!complain_message_count)
100 output_files ();
101
a0f6b076 102 exit (complain_message_count ? 1 : 0);
54bd0db4 103}
a98ad01e 104\f
a98ad01e 105/* Abort for an internal error denoted by string S. */
54bd0db4
RS
106
107void
4a120d45 108berror (const char *s)
54bd0db4 109{
a0f6b076 110 fprintf (stderr, _("%s: internal error: %s\n"), program_name, s);
cc84fd5d 111 abort ();
54bd0db4 112}