Home | History | Annotate | Download | only in src
      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