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.pcc".
5 ///////////////////////////////////////////////////////////////////////////////
8 ///////////////////////////////////////////////////////////////////////////////
10 // This file implements the data structure mapping component of the
13 ///////////////////////////////////////////////////////////////////////////////
20 ///////////////////////////////////////////////////////////////////////////////
22 // Constructor and destructor
24 ///////////////////////////////////////////////////////////////////////////////
25 SETLCompiler:: SETLCompiler() {}
26 SETLCompiler::~SETLCompiler() {}
28 ///////////////////////////////////////////////////////////////////////////////
30 // Entry points of the SETL data structure mapping compiler
32 ///////////////////////////////////////////////////////////////////////////////
34 ///////////////////////////////////////////////////////////////////////////////
36 // Generate a SETL statement
38 ///////////////////////////////////////////////////////////////////////////////
39 void SETLCompiler::gen_setl (Stmt stmt
)
41 bug("SETL sublanguage is not implemented");
45 ///////////////////////////////////////////////////////////////////////////////
47 // Generate a SETL definition
49 ///////////////////////////////////////////////////////////////////////////////
50 void SETLCompiler::gen_setl (Def def
)
56 ///////////////////////////////////////////////////////////////////////////////
58 // Code generation method for definitions
60 ///////////////////////////////////////////////////////////////////////////////
61 void SETLCompiler::gen_def (Def def
)
65 ///////////////////////////////////////////////////////////////////////////////
67 // Code generation method for a list of definitions
69 ///////////////////////////////////////////////////////////////////////////////
70 void SETLCompiler::gen_defs (Defs defs
)
72 #line 64 "setlgen.pcc"
73 #line 65 "setlgen.pcc"
77 #line 65 "setlgen.pcc"
78 gen_def(defs
->_1
); defs
= defs
->_2
;
79 #line 65 "setlgen.pcc"
84 #line 66 "setlgen.pcc"
85 #line 66 "setlgen.pcc"
89 ///////////////////////////////////////////////////////////////////////////////
91 // Code generation method for statements
93 ///////////////////////////////////////////////////////////////////////////////
94 void SETLCompiler::gen_stmt (Stmt stmt
)
96 #line 75 "setlgen.pcc"
97 #line 85 "setlgen.pcc"
100 switch (stmt
->tag__
) {
101 case a_Stmt::tag_ASSIGNstmt
: {} break;
102 case a_Stmt::tag_BLOCKstmt
: {} break;
103 case a_Stmt::tag_WHILEstmt
: {} break;
104 case a_Stmt::tag_IFstmt
: {} break;
105 case a_Stmt::tag_MATCHstmt
: {
106 #line 81 "setlgen.pcc"
107 pr("%D",((Stmt_MATCHstmt
*)stmt
)->MATCHstmt
);
108 #line 81 "setlgen.pcc"
110 case a_Stmt::tag_REWRITEstmt
: {
111 #line 82 "setlgen.pcc"
112 pr("%D",((Stmt_REWRITEstmt
*)stmt
)->REWRITEstmt
);
113 #line 82 "setlgen.pcc"
115 case a_Stmt::tag_REPLACEMENTstmt
: {
116 #line 83 "setlgen.pcc"
117 pr("%D",((Stmt_REPLACEMENTstmt
*)stmt
)->REPLACEMENTstmt
);
118 #line 83 "setlgen.pcc"
120 case a_Stmt::tag_FORALLstmt
: {} break;
122 #line 85 "setlgen.pcc"
123 pr("return %e;",((Stmt_RETURNstmt
*)stmt
)->RETURNstmt
);
124 #line 85 "setlgen.pcc"
129 #line 86 "setlgen.pcc"
130 #line 86 "setlgen.pcc"
134 ///////////////////////////////////////////////////////////////////////////////
136 // Code generation method for a list of statements
138 ///////////////////////////////////////////////////////////////////////////////
139 void SETLCompiler::gen_stmts (Stmts stmts
)
141 #line 95 "setlgen.pcc"
142 #line 96 "setlgen.pcc"
146 #line 96 "setlgen.pcc"
147 gen_stmt(stmts
->_1
); stmts
= stmts
->_2
;
148 #line 96 "setlgen.pcc"
153 #line 97 "setlgen.pcc"
154 #line 97 "setlgen.pcc"
158 ///////////////////////////////////////////////////////////////////////////////
160 // Code generation method for expressions
162 ///////////////////////////////////////////////////////////////////////////////
163 void SETLCompiler::gen_exp (Exp exp
)
167 ///////////////////////////////////////////////////////////////////////////////
169 // Code generation method for an expression list
171 ///////////////////////////////////////////////////////////////////////////////
172 void SETLCompiler::gen_exps (Exps exps
)
174 #line 115 "setlgen.pcc"
175 #line 117 "setlgen.pcc"
180 #line 117 "setlgen.pcc"
181 gen_exp(exps
->_1
); exps
= exps
->_2
;
182 #line 117 "setlgen.pcc"
184 #line 116 "setlgen.pcc"
185 gen_exp(exps
->_1
); exps
=
186 #line 116 "setlgen.pcc"
187 #line 116 "setlgen.pcc"
189 #line 116 "setlgen.pcc"
190 #line 116 "setlgen.pcc"
192 #line 116 "setlgen.pcc"
198 #line 118 "setlgen.pcc"
199 #line 118 "setlgen.pcc"
202 #line 120 "setlgen.pcc"
204 ------------------------------- Statistics -------------------------------
205 Merge matching rules = yes
206 Number of DFA nodes merged = 4
207 Number of ifs generated = 5
208 Number of switches generated = 1
211 Adaptive matching = enabled
212 Fast string matching = disabled
213 Inline downcasts = enabled
214 --------------------------------------------------------------------------