X-Git-Url: https://git.saurik.com/bison.git/blobdiff_plain/592e8d4d010441b079f98b88c2f1af0b62a47cd1..e68e0410aba6a9b976a1e496aa80ffb3d2095fb9:/src/main.c diff --git a/src/main.c b/src/main.c index 9cdd5818..5a0fb458 100644 --- a/src/main.c +++ b/src/main.c @@ -21,6 +21,7 @@ #include "system.h" +#include "bitset_stats.h" #include "bitset.h" #include "getargs.h" #include "symtab.h" @@ -50,11 +51,12 @@ main (int argc, char *argv[]) bindtextdomain (PACKAGE, LOCALEDIR); textdomain (PACKAGE); - bitset_stats_init (); - lineno = 0; getargs (argc, argv); + if (trace_flag) + bitset_stats_enable (); + muscle_init (); /* Read the input. Copy some parts of it to FGUARD, FACTION, FTABLE @@ -105,11 +107,16 @@ main (int argc, char *argv[]) /* Output the tables and the parser to ftable. In file output. */ output (); + states_free (); reduce_free (); conflicts_free (); free_nullable (); free_derives (); grammar_free (); + + /* The scanner memory cannot be released right after parsing, as it + contains things such as user actions, prologue, epilogue etc. */ + scanner_free (); muscle_free (); /* If using alloca.c, flush the alloca'ed memory for the benefit of people running Bison as a library in IDEs. */ @@ -117,5 +124,8 @@ main (int argc, char *argv[]) alloca (0); #endif + if (trace_flag) + bitset_stats_dump (stderr); + return complain_message_count ? EXIT_FAILURE : EXIT_SUCCESS; }