.gitignore
[prop.git] / prop-src / grsgen.h
blob4fe0ac2a578b3534aad4d39d623263e95cb817cc
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 "grsgen.ph".
5 ///////////////////////////////////////////////////////////////////////////////
7 #line 1 "grsgen.ph"
8 ///////////////////////////////////////////////////////////////////////////////
9 //
10 // This file describes the graph rewriting system compiler.
12 ///////////////////////////////////////////////////////////////////////////////
13 #ifndef graph_rewriting_system_compiler_h
14 #define graph_rewriting_system_compiler_h
16 #include "basics.h"
17 #include "codegen.h"
18 #include "matchcom.h"
20 ///////////////////////////////////////////////////////////////////////////////
22 // Forward type declarations
24 ///////////////////////////////////////////////////////////////////////////////
25 #line 18 "grsgen.ph"
26 #line 18 "grsgen.ph"
27 ///////////////////////////////////////////////////////////////////////////////
29 // Forward class definition for Pat
31 ///////////////////////////////////////////////////////////////////////////////
32 #ifndef datatype_Pat_defined
33 #define datatype_Pat_defined
34 class a_Pat;
35 typedef a_Pat * Pat;
36 #endif
38 ///////////////////////////////////////////////////////////////////////////////
40 // Forward class definition for Exp
42 ///////////////////////////////////////////////////////////////////////////////
43 #ifndef datatype_Exp_defined
44 #define datatype_Exp_defined
45 class a_Exp;
46 typedef a_Exp * Exp;
47 #endif
49 ///////////////////////////////////////////////////////////////////////////////
51 // Forward class definition for Decl
53 ///////////////////////////////////////////////////////////////////////////////
54 #ifndef datatype_Decl_defined
55 #define datatype_Decl_defined
56 class a_Decl;
57 typedef a_Decl * Decl;
58 #endif
60 #line 18 "grsgen.ph"
61 #line 18 "grsgen.ph"
64 ///////////////////////////////////////////////////////////////////////////////
66 // Abstract syntax for graph rewriting rules
68 ///////////////////////////////////////////////////////////////////////////////
69 #line 25 "grsgen.ph"
70 #line 47 "grsgen.ph"
71 ///////////////////////////////////////////////////////////////////////////////
73 // Forward class definition for GraphRewritingRule
75 ///////////////////////////////////////////////////////////////////////////////
76 #ifndef datatype_GraphRewritingRule_defined
77 #define datatype_GraphRewritingRule_defined
78 class a_GraphRewritingRule;
79 typedef a_GraphRewritingRule * GraphRewritingRule;
80 #endif
82 ///////////////////////////////////////////////////////////////////////////////
84 // Forward class definition for GRSPat
86 ///////////////////////////////////////////////////////////////////////////////
87 #ifndef datatype_GRSPat_defined
88 #define datatype_GRSPat_defined
89 class a_GRSPat;
90 typedef a_GRSPat * GRSPat;
91 #endif
93 ///////////////////////////////////////////////////////////////////////////////
95 // Forward class definition for GRSConclusion
97 ///////////////////////////////////////////////////////////////////////////////
98 #ifndef datatype_GRSConclusion_defined
99 #define datatype_GRSConclusion_defined
100 class a_GRSConclusion;
101 typedef a_GRSConclusion * GRSConclusion;
102 #endif
104 ///////////////////////////////////////////////////////////////////////////////
105 // Definition of type GRSConclusions
106 ///////////////////////////////////////////////////////////////////////////////
107 #line 46 "grsgen.ph"
108 typedef a_List<GRSConclusion> * GRSConclusions;
110 ///////////////////////////////////////////////////////////////////////////////
112 // Class for datatype constructor GraphRewritingRule::GRSrule
114 ///////////////////////////////////////////////////////////////////////////////
115 class a_GraphRewritingRule : public Loc {
116 public:
117 #line 26 "grsgen.ph"
118 GRSPat lhs; GRSConclusions rhs;
119 a_GraphRewritingRule (GRSPat x_lhs, GRSConclusions x_rhs);
121 inline int boxed(const a_GraphRewritingRule *) { return 1; }
122 inline int untag(const a_GraphRewritingRule *) { return 0; }
123 ///////////////////////////////////////////////////////////////////////////////
125 // Datatype constructor functions for GraphRewritingRule
127 ///////////////////////////////////////////////////////////////////////////////
128 extern a_GraphRewritingRule * GRSrule (GRSPat x_lhs, GRSConclusions x_rhs);
130 ///////////////////////////////////////////////////////////////////////////////
132 // Base class for datatype GRSPat
134 ///////////////////////////////////////////////////////////////////////////////
135 class a_GRSPat : public Loc {
136 public:
137 enum Tag_GRSPat {
138 tag_EDGEgpat = 0, tag_GUARDgpat = 1, tag_NOTgpat = 2,
139 tag_ANDgpat = 3, tag_ORgpat = 4, tag_FORALLgpat = 5
142 public:
143 const Tag_GRSPat tag__; // variant tag
144 protected:
145 inline a_GRSPat(Tag_GRSPat t__) : tag__(t__) {}
146 public:
148 inline int boxed(const a_GRSPat *) { return 1; }
149 inline int untag(const a_GRSPat * x) { return x->tag__; }
150 ///////////////////////////////////////////////////////////////////////////////
152 // Class for datatype constructor GRSPat::EDGEgpat
154 ///////////////////////////////////////////////////////////////////////////////
155 class GRSPat_EDGEgpat : public a_GRSPat {
156 public:
157 #line 31 "grsgen.ph"
158 Id _1; a_List<Pat> * _2;
159 GRSPat_EDGEgpat (Id x_1, a_List<Pat> * x_2);
162 ///////////////////////////////////////////////////////////////////////////////
164 // Class for datatype constructor GRSPat::GUARDgpat
166 ///////////////////////////////////////////////////////////////////////////////
167 class GRSPat_GUARDgpat : public a_GRSPat {
168 public:
169 #line 33 "grsgen.ph"
170 Exp GUARDgpat;
171 GRSPat_GUARDgpat (Exp x_GUARDgpat);
174 ///////////////////////////////////////////////////////////////////////////////
176 // Class for datatype constructor GRSPat::NOTgpat
178 ///////////////////////////////////////////////////////////////////////////////
179 class GRSPat_NOTgpat : public a_GRSPat {
180 public:
181 #line 34 "grsgen.ph"
182 GRSPat NOTgpat;
183 GRSPat_NOTgpat (GRSPat x_NOTgpat);
186 ///////////////////////////////////////////////////////////////////////////////
188 // Class for datatype constructor GRSPat::ANDgpat
190 ///////////////////////////////////////////////////////////////////////////////
191 class GRSPat_ANDgpat : public a_GRSPat {
192 public:
193 #line 35 "grsgen.ph"
194 GRSPat _1; GRSPat _2;
195 GRSPat_ANDgpat (GRSPat x_1, GRSPat x_2);
198 ///////////////////////////////////////////////////////////////////////////////
200 // Class for datatype constructor GRSPat::ORgpat
202 ///////////////////////////////////////////////////////////////////////////////
203 class GRSPat_ORgpat : public a_GRSPat {
204 public:
205 #line 36 "grsgen.ph"
206 GRSPat _1; GRSPat _2;
207 GRSPat_ORgpat (GRSPat x_1, GRSPat x_2);
210 ///////////////////////////////////////////////////////////////////////////////
212 // Class for datatype constructor GRSPat::FORALLgpat
214 ///////////////////////////////////////////////////////////////////////////////
215 class GRSPat_FORALLgpat : public a_GRSPat {
216 public:
217 #line 37 "grsgen.ph"
218 Id _1; GRSPat _2;
219 GRSPat_FORALLgpat (Id x_1, GRSPat x_2);
222 ///////////////////////////////////////////////////////////////////////////////
224 // Datatype constructor functions for GRSPat
226 ///////////////////////////////////////////////////////////////////////////////
227 extern a_GRSPat * EDGEgpat (Id x_1, a_List<Pat> * x_2);
228 extern a_GRSPat * GUARDgpat (Exp x_GUARDgpat);
229 extern a_GRSPat * NOTgpat (GRSPat x_NOTgpat);
230 extern a_GRSPat * ANDgpat (GRSPat x_1, GRSPat x_2);
231 extern a_GRSPat * ORgpat (GRSPat x_1, GRSPat x_2);
232 extern a_GRSPat * FORALLgpat (Id x_1, GRSPat x_2);
234 ///////////////////////////////////////////////////////////////////////////////
236 // Base class for datatype GRSConclusion
238 ///////////////////////////////////////////////////////////////////////////////
239 class a_GRSConclusion : public Loc {
240 public:
241 enum Tag_GRSConclusion {
242 tag_ADDEDGEaction = 0, tag_DELETEEDGEaction = 1, tag_ADDNODEaction = 2,
243 tag_DELETENODEaction = 3, tag_EMBEDDEDaction = 4
246 public:
247 const Tag_GRSConclusion tag__; // variant tag
248 protected:
249 inline a_GRSConclusion(Tag_GRSConclusion t__) : tag__(t__) {}
250 public:
252 inline int boxed(const a_GRSConclusion *) { return 1; }
253 inline int untag(const a_GRSConclusion * x) { return x->tag__; }
254 ///////////////////////////////////////////////////////////////////////////////
256 // Class for datatype constructor GRSConclusion::ADDEDGEaction
258 ///////////////////////////////////////////////////////////////////////////////
259 class GRSConclusion_ADDEDGEaction : public a_GRSConclusion {
260 public:
261 #line 39 "grsgen.ph"
262 Id _1; a_List<Exp> * _2;
263 GRSConclusion_ADDEDGEaction (Id x_1, a_List<Exp> * x_2);
266 ///////////////////////////////////////////////////////////////////////////////
268 // Class for datatype constructor GRSConclusion::DELETEEDGEaction
270 ///////////////////////////////////////////////////////////////////////////////
271 class GRSConclusion_DELETEEDGEaction : public a_GRSConclusion {
272 public:
273 #line 41 "grsgen.ph"
274 Id _1; a_List<Exp> * _2;
275 GRSConclusion_DELETEEDGEaction (Id x_1, a_List<Exp> * x_2);
278 ///////////////////////////////////////////////////////////////////////////////
280 // Class for datatype constructor GRSConclusion::ADDNODEaction
282 ///////////////////////////////////////////////////////////////////////////////
283 class GRSConclusion_ADDNODEaction : public a_GRSConclusion {
284 public:
285 #line 42 "grsgen.ph"
286 Exp ADDNODEaction;
287 GRSConclusion_ADDNODEaction (Exp x_ADDNODEaction);
290 ///////////////////////////////////////////////////////////////////////////////
292 // Class for datatype constructor GRSConclusion::DELETENODEaction
294 ///////////////////////////////////////////////////////////////////////////////
295 class GRSConclusion_DELETENODEaction : public a_GRSConclusion {
296 public:
297 #line 43 "grsgen.ph"
298 Exp DELETENODEaction;
299 GRSConclusion_DELETENODEaction (Exp x_DELETENODEaction);
302 ///////////////////////////////////////////////////////////////////////////////
304 // Class for datatype constructor GRSConclusion::EMBEDDEDaction
306 ///////////////////////////////////////////////////////////////////////////////
307 class GRSConclusion_EMBEDDEDaction : public a_GRSConclusion {
308 public:
309 #line 44 "grsgen.ph"
310 a_List<Decl> * EMBEDDEDaction;
311 GRSConclusion_EMBEDDEDaction (a_List<Decl> * x_EMBEDDEDaction);
314 ///////////////////////////////////////////////////////////////////////////////
316 // Datatype constructor functions for GRSConclusion
318 ///////////////////////////////////////////////////////////////////////////////
319 extern a_GRSConclusion * ADDEDGEaction (Id x_1, a_List<Exp> * x_2);
320 extern a_GRSConclusion * DELETEEDGEaction (Id x_1, a_List<Exp> * x_2);
321 extern a_GRSConclusion * ADDNODEaction (Exp x_ADDNODEaction);
322 extern a_GRSConclusion * DELETENODEaction (Exp x_DELETENODEaction);
323 extern a_GRSConclusion * EMBEDDEDaction (a_List<Decl> * x_EMBEDDEDaction);
325 #line 47 "grsgen.ph"
326 #line 47 "grsgen.ph"
329 ///////////////////////////////////////////////////////////////////////////////
331 // The interface to the graph rewriting system compiler
333 ///////////////////////////////////////////////////////////////////////////////
334 class GraphRewritingCompiler : virtual public CodeGen,
335 virtual public MatchCompiler
336 { GraphRewritingCompiler(const GraphRewritingCompiler&);
337 void operator = (const GraphRewritingCompiler&);
338 public:
339 GraphRewritingCompiler();
340 ~GraphRewritingCompiler();
342 void gen_graph_rewriting_system (Id, LabTys,
343 #line 62 "grsgen.ph"
344 a_List<GraphRewritingRule> *
345 #line 62 "grsgen.ph"
349 #endif
351 ------------------------------- Statistics -------------------------------
352 Merge matching rules = yes
353 Number of DFA nodes merged = 0
354 Number of ifs generated = 0
355 Number of switches generated = 0
356 Number of labels = 0
357 Number of gotos = 0
358 Adaptive matching = enabled
359 Fast string matching = disabled
360 Inline downcasts = enabled
361 --------------------------------------------------------------------------