diff options
author | Paul Eggert <eggert@cs.ucla.edu> | 2006-10-12 23:29:52 +0000 |
---|---|---|
committer | Paul Eggert <eggert@cs.ucla.edu> | 2006-10-12 23:29:52 +0000 |
commit | 35fe08345edf43644a80a5987a50937c67e7c937 (patch) | |
tree | 7309c60b551325dbd7f2390637636eebf96f7f0d /src/graphviz.c | |
parent | dd4bf078276e0ee7fac19a347ca13a7f078a2d3f (diff) | |
download | bison-35fe08345edf43644a80a5987a50937c67e7c937.tar.gz |
* NEWS: The -g and --graph options now output graphs in Graphviz
DOT format, not VCG format.
* doc/bison.1: Likewise.
* doc/bison.texinfo (Understanding, Bison Options): Likewise.
* TODO: Remove Graphviz entry.
* src/Makefile.am (bison_SOURCES): Add graphviz.c and graphviz.h;
remove vcg.c, vcg.h, vcg_defaults.h.
* src/vcg.c, src/vcg.h, src/vcg_defaults.h: Remove.
* src/graphviz.c, src/graphviz.h: New files.
* src/files.c (compute_output_file_names): Output .dot, not .vcg.
* src/files.h: Make comment more generic.
* src/main.c (main): Likewise.
* src/print_graph.h: Likewise.
* src/getargs.c (usage): Make usage description more generic.
* src/print_graph.c: Include graphviz.h rather than vcg.h.
(static_graph, fgraph): Remove. All uses changed to pass
arguments instead of sharing a static var.
(print_core, print_actions, print_state, print_graph):
Output graphviz format rather than VCG format.
* tests/.cvsignore: Remove *.vcg; add *.dot.
* tests/output.at: Expect *.dot files, not *.vcg files.
Diffstat (limited to 'src/graphviz.c')
-rw-r--r-- | src/graphviz.c | 66 |
1 files changed, 66 insertions, 0 deletions
diff --git a/src/graphviz.c b/src/graphviz.c new file mode 100644 index 00000000..d7447aaf --- /dev/null +++ b/src/graphviz.c @@ -0,0 +1,66 @@ +/* Output Graphviz specification of a state machine generated by Bison. + + Copyright (C) 2006 Free Software Foundation, Inc. + + This file is part of Bison, the GNU Compiler Compiler. + + Bison is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2, or (at your option) + any later version. + + Bison is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Bison; see the file COPYING. If not, write to + the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. */ + +/* Written by Paul Eggert and Satya Kiran Popuri. */ + +#include <config.h> +#include "system.h" + +#include <quotearg.h> + +#include "graphviz.h" + +/* Return an unambiguous printable representation for NAME, suitable + for C strings. Use slot 2 since the user may use slots 0 and 1. */ + +static char const * +quote (char const *name) +{ + return quotearg_n_style (2, c_quoting_style, name); +} + +void +start_graph (FILE *fout) +{ + fputs ("digraph Automaton{\n", fout); +} + +void +output_node (int id, char const *label, FILE *fout) +{ + fprintf (fout, "%d[label=%s]\n", id, quote (label)); +} + +void +output_edge (int source, int destination, char const *label, + char const *style, FILE *fout) +{ + fprintf (fout, "%d->%d[style=%s", source, destination, style); + if (label) + fprintf (fout, " label=%s", quote (label)); + fputs ("]\n", fout); +} + +void +finish_graph (FILE *fout) +{ + fputs ("}\n", fout); +} |