previousnext
ASTL homeSTL home

vcg

Prototype

template <class DFA
void vcg(DFA &dfa, const char * title = NULL, ostream &out = cout);

Description

Print dfa on out using the vcg file format, which will allow you to get a visual representation of it, if you have the so-called software installed.

Definition

Defined in vcg.h.

Requirements on types

Preconditions

ostream& << const DFA::Tag& must be defined.

Example

CODE

#include <tag.h>
#include <dfa_matrix.h>
#include <alphabet.h>
#include <iostream.h>
#include <vcg.h>

ostream& operator <<(ostream &out, const struct default_tag &t) { return (out); }

//code corresponding to the
DFA example

main() 
{
//spécifie the type of the DFA
typedef DFA_matrix<Range_alphabet<char,'a','g'>,default_tag> DFA_type;

//initialising the DFA, empty
DFA_type dfa;

//creating and adding the states 
DFA_type::State s[11]; 
for(int i=1;i<=10;i++) 
s[i]=dfa.new_state(); 

//setting the transitions 
dfa.set_trans(s[1],'a',s[2]); 
dfa.set_trans(s[1],'b',s[3]); 
dfa.set_trans(s[2],'f',s[4]); 
dfa.set_trans(s[2],'b',s[5]); 
dfa.set_trans(s[3],'c',s[6]); 
dfa.set_trans(s[4],'g',s[7]); 
dfa.set_trans(s[4],'e',s[9]); 
dfa.set_trans(s[5],'g',s[8]); 
dfa.set_trans(s[6],'b',s[5]); 
dfa.set_trans(s[6],'d',s[8]); 
dfa.set_trans(s[6],'e',s[10]); 
dfa.set_trans(s[8],'d',s[10]);
dfa.set_trans(s[10],'a',s[8]);

//declaring initial and finals states...VERY IMPORTANT...
dfa.initial(s[1]); 
dfa.final(s[5])=true; 
dfa.final(s[9])=true; 
dfa.final(s[10])=true; 

//opening the stream 
fstream file;
file.open("exemple.vcg",ios::out | ios::trunc);


//writing data
vcg(dfa,"EXEMPLE",file);


file.close();
 

VCG OUTPUT

Notes


See also