1 | /* Output Graphviz specification of a state machine generated by Bison. |
2 | |
3 | Copyright (C) 2006, 2010-2015, 2018-2019 Free Software Foundation, |
4 | Inc. |
5 | |
6 | This file is part of Bison, the GNU Compiler Compiler. |
7 | |
8 | This program is free software: you can redistribute it and/or modify |
9 | it under the terms of the GNU General Public License as published by |
10 | the Free Software Foundation, either version 3 of the License, or |
11 | (at your option) any later version. |
12 | |
13 | This program is distributed in the hope that it will be useful, |
14 | but WITHOUT ANY WARRANTY; without even the implied warranty of |
15 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
16 | GNU General Public License for more details. |
17 | |
18 | You should have received a copy of the GNU General Public License |
19 | along with this program. If not, see <http://www.gnu.org/licenses/>. */ |
20 | |
21 | /* Written by Paul Eggert and Satya Kiran Popuri. */ |
22 | |
23 | #ifndef GRAPHVIZ_H_ |
24 | # define GRAPHVIZ_H_ |
25 | |
26 | # include "state.h" |
27 | |
28 | /** Begin a Dot graph. |
29 | * |
30 | * \param fout output stream. |
31 | */ |
32 | void start_graph (FILE *fout); |
33 | |
34 | /** Output a Dot node. |
35 | * |
36 | * \param id identifier of the node |
37 | * \param label human readable label of the node (no Dot escaping needed). |
38 | * \param fout output stream. |
39 | */ |
40 | void output_node (int id, char const *label, FILE *fout); |
41 | |
42 | /** Output a Dot edge. |
43 | * \param source id of the source node |
44 | * \param destination id of the target node |
45 | * \param label human readable label of the edge |
46 | * (no Dot escaping needed). Can be 0. |
47 | * \param style Dot style of the edge (e.g., "dotted" or "solid"). |
48 | * \param fout output stream. |
49 | */ |
50 | void output_edge (int source, int destination, char const *label, |
51 | char const *style, FILE *fout); |
52 | |
53 | /** Output a reduction. |
54 | * \param s current state |
55 | * \param reds the set of reductions |
56 | * \param fout output stream. |
57 | */ |
58 | void output_red (state const *s, reductions const *reds, FILE *fout); |
59 | |
60 | /** End a Dot graph. |
61 | * |
62 | * \param fout output stream. |
63 | */ |
64 | void finish_graph (FILE *fout); |
65 | |
66 | /** Escape a lookahead token. |
67 | * |
68 | * \param name the token. |
69 | */ |
70 | char const *escape (char const *name); |
71 | |
72 | #endif /* ! GRAPHVIZ_H_ */ |
73 | |