1 /* 2 * Copyright 2001-2007 Adrian Thurston <thurston@complang.org> 3 */ 4 5 /* This file is part of Ragel. 6 * 7 * Ragel 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 2 of the License, or 10 * (at your option) any later version. 11 * 12 * Ragel 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 Ragel; if not, write to the Free Software 19 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 20 */ 21 22 #ifndef _GVDOTGEN_H 23 #define _GVDOTGEN_H 24 25 #include <iostream> 26 #include "gendata.h" 27 28 class GraphvizDotGen : public CodeGenData 29 { 30 public: GraphvizDotGen(ostream & out)31 GraphvizDotGen( ostream &out ) : CodeGenData(out) { } 32 33 /* Print an fsm to out stream. */ 34 void writeTransList( RedStateAp *state ); 35 void writeDotFile( ); 36 37 virtual void finishRagelDef(); 38 virtual bool writeStatement( InputLoc &, int, char ** ); 39 40 private: 41 /* Writing labels and actions. */ 42 std::ostream &ONCHAR( Key lowKey, Key highKey ); 43 std::ostream &TRANS_ACTION( RedStateAp *fromState, RedTransAp *trans ); 44 std::ostream &ACTION( RedAction *action ); 45 std::ostream &KEY( Key key ); 46 }; 47 48 #endif 49