]> git.saurik.com Git - bison.git/blobdiff - src/main.c
Change @dircategory from "GNU programming tools" to "Software development".
[bison.git] / src / main.c
index 602d4db6b72e9f94ac8699fc8b296333aa4c0ed7..59402c3ea091652c6382072c9354e89190009027 100644 (file)
@@ -1,5 +1,6 @@
-/* Top level entry point of bison,
-   Copyright (C) 1984, 1986, 1989, 1992, 1995, 2000, 2001, 2002
+/* Top level entry point of Bison.
+
+   Copyright (C) 1984, 1986, 1989, 1992, 1995, 2000, 2001, 2002, 2004
    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.
 
 
 #include "system.h"
 
 
 #include "system.h"
-#include "bitset_stats.h"
-#include "bitset.h"
-#include "getargs.h"
-#include "symtab.h"
-#include "gram.h"
-#include "files.h"
+
+#include <bitset_stats.h>
+#include <bitset.h>
+#include <timevar.h>
+
+#include "LR0.h"
 #include "complain.h"
 #include "complain.h"
+#include "conflicts.h"
 #include "derives.h"
 #include "derives.h"
-#include "tables.h"
-#include "output.h"
-#include "reader.h"
+#include "files.h"
+#include "getargs.h"
+#include "gram.h"
 #include "lalr.h"
 #include "lalr.h"
-#include "reduce.h"
+#include "muscle_tab.h"
 #include "nullable.h"
 #include "nullable.h"
+#include "output.h"
 #include "print.h"
 #include "print.h"
-#include "LR0.h"
-#include "conflicts.h"
 #include "print_graph.h"
 #include "print_graph.h"
-#include "muscle_tab.h"
+#include "reader.h"
+#include "reduce.h"
+#include "symtab.h"
+#include "tables.h"
+#include "uniqstr.h"
 
 /* The name this program was run with, for messages.  */
 char *program_name;
 
 /* The name this program was run with, for messages.  */
 char *program_name;
@@ -51,12 +56,14 @@ 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);
+
+  uniqstrs_new ();
 
   getargs (argc, argv);
 
 
   getargs (argc, argv);
 
-  time_report = trace_flag & trace_time;
+  timevar_report = trace_flag & trace_time;
   init_timevar ();
   timevar_start (TV_TOTAL);
 
   init_timevar ();
   timevar_start (TV_TOTAL);
 
@@ -73,8 +80,8 @@ main (int argc, char *argv[])
   reader ();
   timevar_pop (TV_READER);
 
   reader ();
   timevar_pop (TV_READER);
 
-  if (complain_message_count)
-    exit (1);
+  if (complaint_issued)
+    goto finish;
 
   /* Find useless nonterminals and productions and reduce the grammar. */
   timevar_push (TV_REDUCE);
 
   /* Find useless nonterminals and productions and reduce the grammar. */
   timevar_push (TV_REDUCE);
@@ -100,7 +107,7 @@ 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
-     lookahead is not enough to disambiguate the parsing.  In file
+     look-ahead is not enough to disambiguate the parsing.  In file
      conflicts.  Also resolve s/r conflicts based on precedence
      declarations.  */
   timevar_push (TV_CONFLICTS);
      conflicts.  Also resolve s/r conflicts based on precedence
      declarations.  */
   timevar_push (TV_CONFLICTS);
@@ -137,10 +144,10 @@ main (int argc, char *argv[])
 
   /* Stop if there were errors, to avoid trashing previous output
      files.  */
 
   /* Stop if there were errors, to avoid trashing previous output
      files.  */
-  if (complain_message_count)
-    exit (1);
+  if (complaint_issued)
+    goto finish;
 
 
-  /* Lookaheads are no longer needed. */
+  /* Look-ahead 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);
@@ -163,19 +170,25 @@ main (int argc, char *argv[])
      contains things such as user actions, prologue, epilogue etc.  */
   scanner_free ();
   muscle_free ();
      contains things such as user actions, prologue, epilogue etc.  */
   scanner_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
   /* If using alloca.c, flush the alloca'ed memory for the benefit of
      people running Bison as a library in IDEs.  */
 #if C_ALLOCA
-  alloca (0);
+  {
+    extern void *alloca (size_t);
+    alloca (0);
+  }
 #endif
   timevar_pop (TV_FREE);
 
   if (trace_flag & trace_bitsets)
     bitset_stats_dump (stderr);
 
 #endif
   timevar_pop (TV_FREE);
 
   if (trace_flag & trace_bitsets)
     bitset_stats_dump (stderr);
 
+ finish:
+
   /* Stop timing and print the times.  */
   timevar_stop (TV_TOTAL);
   timevar_print (stderr);
 
   /* Stop timing and print the times.  */
   timevar_stop (TV_TOTAL);
   timevar_print (stderr);
 
-  return complain_message_count ? EXIT_FAILURE : EXIT_SUCCESS;
+  return complaint_issued ? EXIT_FAILURE : EXIT_SUCCESS;
 }
 }