]>
git.saurik.com Git - bison.git/blob - src/main.c
55dca624c4579f45b4372745ffde7fa592ee4425
   1 /* Top level entry point of bison, 
   2    Copyright 1984, 1986, 1989, 1992, 1995, 2000, 2001 
   3    Free Software Foundation, Inc. 
   5    This file is part of Bison, the GNU Compiler Compiler. 
   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) 
  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. 
  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.  */ 
  35 #include "conflicts.h" 
  36 #include "print_graph.h" 
  37 #include "muscle_tab.h" 
  41 /* The name this program was run with, for messages.  */ 
  45 main (int argc
, char *argv
[]) 
  47   program_name 
= argv
[0]; 
  48   setlocale (LC_ALL
, ""); 
  49   bindtextdomain (PACKAGE
, LOCALEDIR
); 
  57   /* Read the input.  Copy some parts of it to FGUARD, FACTION, FTABLE 
  58      and FATTRS.  In file reader.c.  The other parts are recorded in 
  59      the grammar; see gram.h.  */ 
  61   if (complain_message_count
) 
  64   /* Find useless nonterminals and productions and reduce the grammar. */ 
  67   /* Record other info about the grammar.  In files derives and 
  72   /* Convert to nondeterministic finite state machine.  In file LR0. 
  73      See state.h for more info.  */ 
  76   /* make it deterministic.  In file lalr.  */ 
  79   /* Find and record any conflicts: places where one token of 
  80      lookahead is not enough to disambiguate the parsing.  In file 
  81      conflicts.  Also resolve s/r conflicts based on precedence 
  86   /* Output file names. */ 
  87   compute_output_file_names (); 
  89   /* Output the detailed report on the grammar.  */ 
  93   /* Stop if there were errors, to avoid trashing previous output 
  95   if (complain_message_count
) 
  98   /* Output the VCG graph.  */ 
 102   /* Output the tables and the parser to ftable.  In file output.  */ 
 105   /* Free the symbol table data structure.  */ 
 113   /* If using alloca.c, flush the alloca'ed memory for the benefit of 
 114      people running Bison as a library in IDEs.  */ 
 119   return complain_message_count 
? EXIT_FAILURE 
: EXIT_SUCCESS
;