with debug
[prop.git] / prop-src / setlgen.h
blob5d4d3b2c4f946194669e04561b85246f71e304d2
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
8 #include <propdefs.h>
9 #line 1 "setlgen.ph"
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
18 #include "matchcom.h"
19 #include "setl-ast.h"
20 #include "env.h"
22 ///////////////////////////////////////////////////////////////////////////////
24 // Forward declarations
26 ///////////////////////////////////////////////////////////////////////////////
27 #line 18 "setlgen.ph"
28 #line 18 "setlgen.ph"
29 ///////////////////////////////////////////////////////////////////////////////
31 // Forward class definition for Time
33 ///////////////////////////////////////////////////////////////////////////////
34 #ifndef datatype_Time_defined
35 #define datatype_Time_defined
36 class a_Time;
37 typedef a_Time * Time;
38 #endif
40 ///////////////////////////////////////////////////////////////////////////////
42 // Forward class definition for Space
44 ///////////////////////////////////////////////////////////////////////////////
45 #ifndef datatype_Space_defined
46 #define datatype_Space_defined
47 class a_Space;
48 typedef a_Space * Space;
49 #endif
51 #line 18 "setlgen.ph"
52 #line 18 "setlgen.ph"
55 ///////////////////////////////////////////////////////////////////////////////
56 //
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
62 extern
63 #line 27 "setlgen.ph"
64 Tuple2<Id, Ty>
65 #line 27 "setlgen.ph"
66 type_of (LabExp, const Env&); // type checking an labeled expression
67 extern Tuple2<Ids, Tys>
68 #line 28 "setlgen.ph"
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
85 public:
86 ////////////////////////////////////////////////////////////////////////////
87 //
88 // Constructor and destructor
90 ////////////////////////////////////////////////////////////////////////////
91 SETLCompiler();
92 virtual ~SETLCompiler();
94 ////////////////////////////////////////////////////////////////////////////
96 // Generate SETL-like statements and definitions
98 ////////////////////////////////////////////////////////////////////////////
99 void gen_setl (Stmt);
100 void gen_setl (Def);
102 private:
104 ////////////////////////////////////////////////////////////////////////////
106 // Domain inference methods
108 ////////////////////////////////////////////////////////////////////////////
110 ////////////////////////////////////////////////////////////////////////////
112 // Time and space complexity inference methods
114 ////////////////////////////////////////////////////////////////////////////
115 Tuple2<Time, Space>
116 #line 74 "setlgen.ph"
117 complexity_of (Exp, const Env&);
118 Tuple2<Time, Space>
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
135 #endif
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
142 Number of labels = 0
143 Number of gotos = 0
144 Adaptive matching = enabled
145 Fast string matching = disabled
146 Inline downcasts = enabled
147 --------------------------------------------------------------------------