]> git.saurik.com Git - bison.git/blobdiff - src/main.c
* m4/prereq.m4: Update, from Coreutils 4.5.1.
[bison.git] / src / main.c
index 64d6c346f579ea7417d1ae29dfc2c2a379dfeed8..b5a8e0010cba635f13dead55b0e107927e6cb2b6 100644 (file)
@@ -1,5 +1,5 @@
 /* Top level entry point of bison,
 /* Top level entry point of bison,
-   Copyright 1984, 1986, 1989, 1992, 1995, 2000, 2001, 2002
+   Copyright (C) 1984, 1986, 1989, 1992, 1995, 2000, 2001, 2002
    Free Software Foundation, Inc.
 
    This file is part of Bison, the GNU Compiler Compiler.
    Free Software Foundation, Inc.
 
    This file is part of Bison, the GNU Compiler Compiler.
@@ -29,6 +29,7 @@
 #include "files.h"
 #include "complain.h"
 #include "derives.h"
 #include "files.h"
 #include "complain.h"
 #include "derives.h"
+#include "tables.h"
 #include "output.h"
 #include "reader.h"
 #include "lalr.h"
 #include "output.h"
 #include "reader.h"
 #include "lalr.h"
@@ -50,8 +51,8 @@ main (int argc, char *argv[])
 {
   program_name = argv[0];
   setlocale (LC_ALL, "");
 {
   program_name = argv[0];
   setlocale (LC_ALL, "");
-  bindtextdomain (PACKAGE, LOCALEDIR);
-  textdomain (PACKAGE);
+  (void) bindtextdomain (PACKAGE, LOCALEDIR);
+  (void) textdomain (PACKAGE);
 
   getargs (argc, argv);
 
 
   getargs (argc, argv);
 
@@ -83,8 +84,8 @@ main (int argc, char *argv[])
   /* Record other info about the grammar.  In files derives and
      nullable.  */
   timevar_push (TV_SETS);
   /* Record other info about the grammar.  In files derives and
      nullable.  */
   timevar_push (TV_SETS);
-  set_derives ();
-  set_nullable ();
+  derives_compute ();
+  nullable_compute ();
   timevar_pop (TV_SETS);
 
   /* Convert to nondeterministic finite state machine.  In file LR0.
   timevar_pop (TV_SETS);
 
   /* Convert to nondeterministic finite state machine.  In file LR0.
@@ -107,6 +108,14 @@ main (int argc, char *argv[])
   conflicts_print ();
   timevar_pop (TV_CONFLICTS);
 
   conflicts_print ();
   timevar_pop (TV_CONFLICTS);
 
+  /* Compute the parser tables.  */
+  timevar_push (TV_ACTIONS);
+  tables_generate ();
+  timevar_pop (TV_ACTIONS);
+
+  grammar_rules_never_reduced_report
+    (_("rule never reduced because of conflicts"));
+
   /* Output file names. */
   compute_output_file_names ();
 
   /* Output file names. */
   compute_output_file_names ();
 
@@ -118,11 +127,6 @@ main (int argc, char *argv[])
       timevar_pop (TV_REPORT);
     }
 
       timevar_pop (TV_REPORT);
     }
 
-  /* Stop if there were errors, to avoid trashing previous output
-     files.  */
-  if (complain_message_count)
-    exit (1);
-
   /* Output the VCG graph.  */
   if (graph_flag)
     {
   /* Output the VCG graph.  */
   if (graph_flag)
     {
@@ -131,17 +135,28 @@ main (int argc, char *argv[])
       timevar_pop (TV_GRAPH);
     }
 
       timevar_pop (TV_GRAPH);
     }
 
+  /* Stop if there were errors, to avoid trashing previous output
+     files.  */
+  if (complain_message_count)
+    exit (1);
+
+  /* Lookaheads are no longer needed. */
+  timevar_push (TV_FREE);
+  lalr_free ();
+  timevar_pop (TV_FREE);
+
   /* Output the tables and the parser to ftable.  In file output.  */
   timevar_push (TV_PARSER);
   output ();
   timevar_pop (TV_PARSER);
 
   timevar_push (TV_FREE);
   /* Output the tables and the parser to ftable.  In file output.  */
   timevar_push (TV_PARSER);
   output ();
   timevar_pop (TV_PARSER);
 
   timevar_push (TV_FREE);
+  nullable_free ();
+  derives_free ();
+  tables_free ();
   states_free ();
   reduce_free ();
   conflicts_free ();
   states_free ();
   reduce_free ();
   conflicts_free ();
-  free_nullable ();
-  free_derives ();
   grammar_free ();
 
   /* The scanner memory cannot be released right after parsing, as it
   grammar_free ();
 
   /* The scanner memory cannot be released right after parsing, as it