1 ///////////////////////////////////////////////////////////////////////////////
3 // This file implements the dataflow analyzer generator.
5 ///////////////////////////////////////////////////////////////////////////////
12 ///////////////////////////////////////////////////////////////////////////////
14 // Instantiate the Prop datatypes.
16 ///////////////////////////////////////////////////////////////////////////////
17 instantiate datatype Domain, List<Domain>;
19 ///////////////////////////////////////////////////////////////////////////////
21 // Pretty printer for a sequence of domains.
23 ///////////////////////////////////////////////////////////////////////////////
24 ostream& print_domains (ostream& f, Id sep, Domains d)
27 | #[ one ]: { return f << one; }
28 | #[ one ... rest ]: { f << one << sep; d = rest; }
32 ///////////////////////////////////////////////////////////////////////////////
34 // Pretty printer for domains.
36 ///////////////////////////////////////////////////////////////////////////////
37 ostream& operator << (ostream& f, Domain d)
39 UNITdom: { f << "unit"; }
40 | FINSETdom ty: { f << "setof<" << ty << ">"; }
41 | LIFTdom d: { f << "lift<" << d << ">"; }
42 | SUMdom d: { print_domains(f," + ",d); }
43 | PRODUCTdom d: { print_domains(f," * ",d); }
48 ///////////////////////////////////////////////////////////////////////////////
52 ///////////////////////////////////////////////////////////////////////////////
53 DataflowClass::DataflowClass(Id id, Inherits i, TyQual q, Decls d)
54 : ClassDefinition(DATAFLOW_CLASS,
55 id,#[],add_inherit("DataflowBase",#[],i),q,d) {}
56 DataflowClass::~DataflowClass() {}
58 void DataflowClass::gen_class_interface(CodeGen& C)
62 ///////////////////////////////////////////////////////////////////////////////
64 // Constructor and destructor for the dataflow compiler.
66 ///////////////////////////////////////////////////////////////////////////////
67 DataflowCompiler:: DataflowCompiler () {}
68 DataflowCompiler::~DataflowCompiler () {}