1 ///////////////////////////////////////////////////////////////////////////////
2 // This file is generated automatically using Prop (version 2.3.6),
3 // last updated on Nov 2, 1999.
4 // The original source file is "setlgen.ph".
5 ///////////////////////////////////////////////////////////////////////////////
7 #define PROP_TUPLE2_USED
10 ///////////////////////////////////////////////////////////////////////////////
12 // This file describes the interface of the SETL-like sublanguage compiler.
14 ///////////////////////////////////////////////////////////////////////////////
15 #ifndef SETL_data_mapping_compiler_h
16 #define SETL_data_mapping_compiler_h
22 ///////////////////////////////////////////////////////////////////////////////
24 // Forward declarations
26 ///////////////////////////////////////////////////////////////////////////////
29 ///////////////////////////////////////////////////////////////////////////////
31 // Forward class definition for Time
33 ///////////////////////////////////////////////////////////////////////////////
34 #ifndef datatype_Time_defined
35 #define datatype_Time_defined
37 typedef a_Time
* Time
;
40 ///////////////////////////////////////////////////////////////////////////////
42 // Forward class definition for Space
44 ///////////////////////////////////////////////////////////////////////////////
45 #ifndef datatype_Space_defined
46 #define datatype_Space_defined
48 typedef a_Space
* Space
;
55 ///////////////////////////////////////////////////////////////////////////////
57 // Type checking methods
59 ///////////////////////////////////////////////////////////////////////////////
60 extern Ty
type_of (Exp
, const Env
&); // type checking an expression
61 extern Tys
type_of (Exps
, const Env
&); // type checking an expression list
66 type_of (LabExp
, const Env
&); // type checking an labeled expression
67 extern Tuple2
<Ids
, Tys
>
69 type_of (LabExps
, const Env
&); // type checking an labeled expression list
70 extern Env
type_of (Def
, const Env
&); // type checking a definition
71 extern Env
type_of (Defs
, const Env
&); // type checking a definition list
72 extern void type_of (Stmt
, const Env
&); // type checking a statement
73 extern void type_of (Stmts
, const Env
&); // type checking a statement list
75 ///////////////////////////////////////////////////////////////////////////////
77 // We inherit from the code generator and the match compiler.
79 ///////////////////////////////////////////////////////////////////////////////
80 class SETLCompiler
: virtual public CodeGen
,
81 virtual public MatchCompiler
83 SETLCompiler(const SETLCompiler
&); // no copy constructor
84 void operator = (const SETLCompiler
&); // no assignment
86 ////////////////////////////////////////////////////////////////////////////
88 // Constructor and destructor
90 ////////////////////////////////////////////////////////////////////////////
92 virtual ~SETLCompiler();
94 ////////////////////////////////////////////////////////////////////////////
96 // Generate SETL-like statements and definitions
98 ////////////////////////////////////////////////////////////////////////////
104 ////////////////////////////////////////////////////////////////////////////
106 // Domain inference methods
108 ////////////////////////////////////////////////////////////////////////////
110 ////////////////////////////////////////////////////////////////////////////
112 // Time and space complexity inference methods
114 ////////////////////////////////////////////////////////////////////////////
116 #line 74 "setlgen.ph"
117 complexity_of (Exp
, const Env
&);
119 #line 75 "setlgen.ph"
120 complexity_of (Stmt
, const Env
&);
122 ////////////////////////////////////////////////////////////////////////////
124 // Code generation methods
126 ////////////////////////////////////////////////////////////////////////////
127 void gen_def (Def
); // code generation for definitions
128 void gen_defs (Defs
); // code generation for definition lists
129 void gen_stmt (Stmt
); // code generation for statements
130 void gen_stmts (Stmts
); // code generation for statement lists
131 void gen_exp (Exp
); // code generation for expressions
132 void gen_exps (Exps
); // code generation for expression lists
137 ------------------------------- Statistics -------------------------------
138 Merge matching rules = yes
139 Number of DFA nodes merged = 0
140 Number of ifs generated = 0
141 Number of switches generated = 0
144 Adaptive matching = enabled
145 Fast string matching = disabled
146 Inline downcasts = enabled
147 --------------------------------------------------------------------------