]> git.saurik.com Git - bison.git/blobdiff - src/main.c
Get rid of broken %no-parser, -n, and --no-parser implementation and
[bison.git] / src / main.c
index ba594b47f1303a2f7784f2098c26e6d8defc6f99..8463608360f942697834a705786417934f624472 100644 (file)
@@ -1,7 +1,7 @@
 /* Top level entry point of Bison.
 
 /* Top level entry point of Bison.
 
-   Copyright (C) 1984, 1986, 1989, 1992, 1995, 2000, 2001, 2002, 2004
-   Free Software Foundation, Inc.
+   Copyright (C) 1984, 1986, 1989, 1992, 1995, 2000, 2001, 2002, 2004,
+   2005, 2006, 2007 Free Software Foundation, Inc.
 
    This file is part of Bison, the GNU Compiler Compiler.
 
 
    This file is part of Bison, the GNU Compiler Compiler.
 
    the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
    Boston, MA 02110-1301, USA.  */
 
    the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
    Boston, MA 02110-1301, USA.  */
 
-
+#include <config.h>
 #include "system.h"
 
 #include <bitset_stats.h>
 #include <bitset.h>
 #include "system.h"
 
 #include <bitset_stats.h>
 #include <bitset.h>
+#include <configmake.h>
+#include <quotearg.h>
 #include <timevar.h>
 
 #include "LR0.h"
 #include <timevar.h>
 
 #include "LR0.h"
 #include "print_graph.h"
 #include "reader.h"
 #include "reduce.h"
 #include "print_graph.h"
 #include "reader.h"
 #include "reduce.h"
+#include "scan-code.h"
+#include "scan-gram.h"
+#include "scan-skel.h"
 #include "symtab.h"
 #include "tables.h"
 #include "uniqstr.h"
 
 #include "symtab.h"
 #include "tables.h"
 #include "uniqstr.h"
 
-/* The name this program was run with, for messages.  */
-char *program_name;
-
 
 
 int
 
 
 int
@@ -108,11 +110,19 @@ main (int argc, char *argv[])
   timevar_pop (TV_LALR);
 
   /* Find and record any conflicts: places where one token of
   timevar_pop (TV_LALR);
 
   /* Find and record any conflicts: places where one token of
-     look-ahead is not enough to disambiguate the parsing.  In file
+     lookahead is not enough to disambiguate the parsing.  In file
      conflicts.  Also resolve s/r conflicts based on precedence
      declarations.  */
   timevar_push (TV_CONFLICTS);
   conflicts_solve ();
      conflicts.  Also resolve s/r conflicts based on precedence
      declarations.  */
   timevar_push (TV_CONFLICTS);
   conflicts_solve ();
+  {
+    state_number *old_to_new = xnmalloc (nstates, sizeof *old_to_new);
+    state_number nstates_old = nstates;
+    state_remove_unreachable_states (old_to_new);
+    lalr_update_state_numbers (old_to_new, nstates_old);
+    conflicts_update_state_numbers (old_to_new, nstates_old);
+    free (old_to_new);
+  }
   conflicts_print ();
   timevar_pop (TV_CONFLICTS);
 
   conflicts_print ();
   timevar_pop (TV_CONFLICTS);
 
@@ -135,7 +145,7 @@ main (int argc, char *argv[])
       timevar_pop (TV_REPORT);
     }
 
       timevar_pop (TV_REPORT);
     }
 
-  /* Output the VCG graph.  */
+  /* Output the graph.  */
   if (graph_flag)
     {
       timevar_push (TV_GRAPH);
   if (graph_flag)
     {
       timevar_push (TV_GRAPH);
@@ -148,7 +158,7 @@ main (int argc, char *argv[])
   if (complaint_issued)
     goto finish;
 
   if (complaint_issued)
     goto finish;
 
-  /* Look-ahead tokens are no longer needed. */
+  /* Lookahead tokens are no longer needed. */
   timevar_push (TV_FREE);
   lalr_free ();
   timevar_pop (TV_FREE);
   timevar_push (TV_FREE);
   lalr_free ();
   timevar_pop (TV_FREE);
@@ -166,20 +176,16 @@ main (int argc, char *argv[])
   reduce_free ();
   conflicts_free ();
   grammar_free ();
   reduce_free ();
   conflicts_free ();
   grammar_free ();
+  output_file_names_free ();
 
   /* The scanner memory cannot be released right after parsing, as it
      contains things such as user actions, prologue, epilogue etc.  */
 
   /* The scanner memory cannot be released right after parsing, as it
      contains things such as user actions, prologue, epilogue etc.  */
-  scanner_free ();
+  gram_scanner_free ();
   muscle_free ();
   uniqstrs_free ();
   muscle_free ();
   uniqstrs_free ();
-  /* If using alloca.c, flush the alloca'ed memory for the benefit of
-     people running Bison as a library in IDEs.  */
-#if C_ALLOCA
-  {
-    extern void *alloca (size_t);
-    alloca (0);
-  }
-#endif
+  code_scanner_free ();
+  skel_scanner_free ();
+  quotearg_free ();
   timevar_pop (TV_FREE);
 
   if (trace_flag & trace_bitsets)
   timevar_pop (TV_FREE);
 
   if (trace_flag & trace_bitsets)