]> git.saurik.com Git - bison.git/blame - src/graphviz.c
Fix some error-reporting macro bugs.
[bison.git] / src / graphviz.c
CommitLineData
35fe0834
PE
1/* Output Graphviz specification of a state machine generated by Bison.
2
3 Copyright (C) 2006 Free Software Foundation, Inc.
4
5 This file is part of Bison, the GNU Compiler Compiler.
6
f16b0819 7 This program is free software: you can redistribute it and/or modify
35fe0834 8 it under the terms of the GNU General Public License as published by
f16b0819
PE
9 the Free Software Foundation, either version 3 of the License, or
10 (at your option) any later version.
35fe0834 11
f16b0819 12 This program is distributed in the hope that it will be useful,
35fe0834
PE
13 but WITHOUT ANY WARRANTY; without even the implied warranty of
14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 GNU General Public License for more details.
16
17 You should have received a copy of the GNU General Public License
f16b0819 18 along with this program. If not, see <http://www.gnu.org/licenses/>. */
35fe0834
PE
19
20/* Written by Paul Eggert and Satya Kiran Popuri. */
21
22#include <config.h>
23#include "system.h"
24
25#include <quotearg.h>
26
27#include "graphviz.h"
28
29/* Return an unambiguous printable representation for NAME, suitable
30 for C strings. Use slot 2 since the user may use slots 0 and 1. */
31
32static char const *
33quote (char const *name)
34{
35 return quotearg_n_style (2, c_quoting_style, name);
36}
37
38void
39start_graph (FILE *fout)
40{
41 fputs ("digraph Automaton{\n", fout);
42}
43
44void
45output_node (int id, char const *label, FILE *fout)
46{
47 fprintf (fout, "%d[label=%s]\n", id, quote (label));
48}
49
50void
51output_edge (int source, int destination, char const *label,
52 char const *style, FILE *fout)
53{
54 fprintf (fout, "%d->%d[style=%s", source, destination, style);
55 if (label)
56 fprintf (fout, " label=%s", quote (label));
57 fputs ("]\n", fout);
58}
59
60void
61finish_graph (FILE *fout)
62{
63 fputs ("}\n", fout);
64}