1 ///////////////////////////////////////////////////////////////////////////////
3 // This file contains the interface of the dataflow analyzer generator.
5 ///////////////////////////////////////////////////////////////////////////////
6 #ifndef dataflow_analyzer_generator_h
7 #define dataflow_analyzer_generator_h
13 ///////////////////////////////////////////////////////////////////////////////
15 // Forward type definitions
17 ///////////////////////////////////////////////////////////////////////////////
20 ///////////////////////////////////////////////////////////////////////////////
22 // Datatype 'Domain' is denotes the structure of an abstract domain.
24 ///////////////////////////////////////////////////////////////////////////////
25 datatype Domain : public Loc =
27 | FINSETdom Ty // finite set of a type
28 | LIFTdom Domain // lifted domain
29 | SUMdom Domains // sum domain
30 | PRODUCTdom Domains // product domain
32 where type Domains = List<Domain> // a sequence of domains.
35 ///////////////////////////////////////////////////////////////////////////////
37 // Pretty printing methods
39 ///////////////////////////////////////////////////////////////////////////////
40 extern ostream& operator << (ostream&, Domain);
42 ///////////////////////////////////////////////////////////////////////////////
44 // Dataflow class definitions
46 ///////////////////////////////////////////////////////////////////////////////
47 class DataflowClass : public ClassDefinition
48 { DataflowClass(const DataflowClass&);
49 void operator = (const DataflowClass&);
51 DataflowClass(Id, Inherits, TyQual, Decls);
53 virtual void gen_class_interface(CodeGen&);
56 ///////////////////////////////////////////////////////////////////////////////
58 // The interface of the dataflow analyzer compiler.
60 ///////////////////////////////////////////////////////////////////////////////
61 class DataflowCompiler : public virtual CodeGen {
62 DataflowCompiler(const DataflowCompiler&);
63 void operator = (const DataflowCompiler&);
65 ////////////////////////////////////////////////////////////////////////////
67 // Constructor and destructor
69 ////////////////////////////////////////////////////////////////////////////
71 virtual ~DataflowCompiler ();