* src/main.c (main): Call print and print_graph conditionally.
* src/print.c (print): Work unconditionally.
* src/print_graph.c (print_graph): Work unconditionally.
* src/conflicts.c (log_resolution): Output only if verbose_flag.
+2001-12-17 Akim Demaille <akim@epita.fr>
+
+ * src/files.c (output_files): Free the output_obstack.
+ * src/main.c (main): Call print and print_graph conditionally.
+ * src/print.c (print): Work unconditionally.
+ * src/print_graph.c (print_graph): Work unconditionally.
+ * src/conflicts.c (log_resolution): Output only if verbose_flag.
+
2001-12-16 Marc Autret <autret_m@epita.fr>
* src/output.c (actions_output): Fix. When we use %no-lines,
static inline void
log_resolution (int state, int LAno, int token, char *resolution)
{
- obstack_fgrow4 (&output_obstack,
- _("\
+ if (verbose_flag)
+ obstack_fgrow4 (&output_obstack,
+ _("\
Conflict in state %d between rule %d and token %s resolved as %s.\n"),
- state, LAruleno[LAno], tags[token], resolution);
+ state, LAruleno[LAno], tags[token], resolution);
}
char *temp_name;
obstack_save (&attrs_obstack, attrsfile);
- obstack_free (&attrs_obstack, NULL);
temp_name = stringappend (short_base_name, EXT_GUARD_C);
#ifndef MSDOS
temp_name = stringappend (temp_name, src_extension);
#endif /* MSDOS */
obstack_save (&guard_obstack, temp_name);
- obstack_free (&guard_obstack, NULL);
}
+
+ obstack_free (&guard_obstack, NULL);
+ obstack_free (&attrs_obstack, NULL);
}
exit (1);
/* Output the detailed report on the grammar. */
- print_results ();
+ if (verbose_flag)
+ print_results ();
/* Output the VCG graph. */
- print_graph ();
+ if (graph_flag)
+ print_graph ();
/* Output the tables and the parser to ftable. In file output. */
output ();
void
print_results (void)
{
- if (verbose_flag)
- {
- int i;
+ int i;
- /* We used to use just .out if SPEC_NAME_PREFIX (-p) was used, but
- that conflicts with Posix. */
- FILE *out = xfopen (spec_verbose_file, "w");
+ /* We used to use just .out if SPEC_NAME_PREFIX (-p) was used, but
+ that conflicts with Posix. */
+ FILE *out = xfopen (spec_verbose_file, "w");
- size_t size = obstack_object_size (&output_obstack);
- fwrite (obstack_finish (&output_obstack), 1, size, out);
- if (size)
- fputs ("\n\n", out);
+ size_t size = obstack_object_size (&output_obstack);
+ fwrite (obstack_finish (&output_obstack), 1, size, out);
+ obstack_free (&output_obstack, NULL);
- reduce_output (out);
- conflicts_output (out);
+ if (size)
+ fputs ("\n\n", out);
- print_grammar (out);
+ reduce_output (out);
+ conflicts_output (out);
- /* New experimental feature: output all the items of a state,
- not only its kernel. Requires to run closure, which need
- memory allocation/deallocation. */
- if (trace_flag)
- new_closure (nitems);
- for (i = 0; i < nstates; i++)
- print_state (out, i);
- if (trace_flag)
- free_closure ();
+ print_grammar (out);
- xfclose (out);
- }
- obstack_free (&output_obstack, NULL);
+ /* New experimental feature: output all the items of a state,
+ not only its kernel. Requires to run closure, which need
+ memory allocation/deallocation. */
+ if (trace_flag)
+ new_closure (nitems);
+ for (i = 0; i < nstates; i++)
+ print_state (out, i);
+ if (trace_flag)
+ free_closure ();
+
+ xfclose (out);
}
{
int i;
- if (!graph_flag)
- return;
-
/* Output file. */
fgraph = xfopen (spec_graph_file, "w");