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