if (complain_message_count)
exit (1);
- /* find useless nonterminals and productions and reduce the grammar. In
- file reduce.c */
+ /* Find useless nonterminals and productions and reduce the grammar.
+ In file reduce.c. */
reduce_grammar ();
- /* record other info about the grammar. In files derives and nullable. */
+ /* Record other info about the grammar. In files derives and
+ nullable. */
set_derives ();
set_nullable ();
- /* convert to nondeterministic finite state machine. In file LR0.
+ /* Convert to nondeterministic finite state machine. In file LR0.
See state.h for more info. */
generate_states ();
conflicts. Also resolve s/r conflicts based on precedence
declarations. */
solve_conflicts ();
+ conflicts_print ();
/* Output file names. */
compute_output_file_names ();
if (complain_message_count)
exit (1);
- /* Print information about results, if requested. */
+ /* Output the detailed report on the grammar. */
print_results ();
/* Output the VCG graph. */
/* Output the tables and the parser to ftable. In file output. */
output ();
+ /* Close the input files. */
+ close_files ();
+
/* Free the symbol table data structure. */
free_symtab ();
lex_free ();
- /* Close the input files. */
- close_files ();
-
+ reduce_free ();
free_conflicts ();
free_nullable ();
free_derives ();
output_files ();
- exit (complain_message_count ? 1 : 0);
+ /* 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);
+#endif
+
+ return complain_message_count ? EXIT_FAILURE : EXIT_SUCCESS;
}
\f
/* Abort for an internal error denoted by string S. */