]> git.saurik.com Git - bison.git/blame - src/graphviz.c
doc: fix some invalid @ref.
[bison.git] / src / graphviz.c
CommitLineData
35fe0834
PE
1/* Output Graphviz specification of a state machine generated by Bison.
2
34136e65 3 Copyright (C) 2006-2007, 2009-2012 Free Software Foundation, Inc.
35fe0834
PE
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
8176ab33 27#include "files.h"
35fe0834
PE
28#include "graphviz.h"
29
30/* Return an unambiguous printable representation for NAME, suitable
31 for C strings. Use slot 2 since the user may use slots 0 and 1. */
32
33static char const *
34quote (char const *name)
35{
36 return quotearg_n_style (2, c_quoting_style, name);
37}
38
39void
40start_graph (FILE *fout)
41{
8176ab33 42 fprintf (fout,
b7666378
JD
43 _("// Generated by %s.\n"
44 "// Report bugs to <%s>.\n"
45 "// Home page: <%s>.\n"
8176ab33
AD
46 "\n"),
47 PACKAGE_STRING,
48 PACKAGE_BUGREPORT,
49 PACKAGE_URL);
50 fprintf (fout,
51 "digraph %s\n"
52 "{\n",
53 quote (grammar_file));
35fe0834
PE
54}
55
56void
57output_node (int id, char const *label, FILE *fout)
58{
21f1b063 59 fprintf (fout, " %d [label=%s]\n", id, quote (label));
35fe0834
PE
60}
61
62void
63output_edge (int source, int destination, char const *label,
e9690142 64 char const *style, FILE *fout)
35fe0834 65{
21f1b063 66 fprintf (fout, " %d -> %d [style=%s", source, destination, style);
35fe0834
PE
67 if (label)
68 fprintf (fout, " label=%s", quote (label));
69 fputs ("]\n", fout);
70}
71
72void
73finish_graph (FILE *fout)
74{
75 fputs ("}\n", fout);
76}