aboutsummaryrefslogtreecommitdiffstats
path: root/contrib/tools/ragel6/dotcodegen.h
blob: cce66baa021d33aaab54d5145f72e782d6c2470b (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
/* 
 *  Copyright 2001-2007 Adrian Thurston <thurston@complang.org> 
 */ 
 
/*  This file is part of Ragel. 
 * 
 *  Ragel is free software; you can redistribute it and/or modify 
 *  it under the terms of the GNU General Public License as published by 
 *  the Free Software Foundation; either version 2 of the License, or 
 *  (at your option) any later version. 
 *  
 *  Ragel is distributed in the hope that it will be useful, 
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of 
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the 
 *  GNU General Public License for more details. 
 *  
 *  You should have received a copy of the GNU General Public License 
 *  along with Ragel; if not, write to the Free Software 
 *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA  
 */ 
 
#ifndef _GVDOTGEN_H 
#define _GVDOTGEN_H 
 
#include <iostream> 
#include "gendata.h" 
 
class GraphvizDotGen : public CodeGenData 
{ 
public: 
	GraphvizDotGen( ostream &out ) : CodeGenData(out) { } 
 
	/* Print an fsm to out stream. */ 
	void writeTransList( RedStateAp *state ); 
	void writeDotFile( ); 
 
	virtual void finishRagelDef(); 
	virtual bool writeStatement( InputLoc &, int, char ** );
 
private: 
	/* Writing labels and actions. */ 
	std::ostream &ONCHAR( Key lowKey, Key highKey ); 
	std::ostream &TRANS_ACTION( RedStateAp *fromState, RedTransAp *trans ); 
	std::ostream &ACTION( RedAction *action ); 
	std::ostream &KEY( Key key ); 
}; 
 
#endif