overhaul of statement codegen
[charm.git] / src / langs / charj / src / charj / translator / Charj.stg
1 group Charj;
2
3 charjSource_ci(pd, ids, tds, debug) ::= 
4 //<pd>
5 //<ids>
6 <<
7 <if(debug)>/* \<charjSource_ci> */<endif>
8 /*
9  * packageDeclaration disabled...
10 <pd>
11  * end packageDeclaration
12  */
13
14 /*
15  * importDeclarations disabled...
16 <ids>
17  * end importDeclarations
18  */
19
20 <tds>
21 <if(debug)>/* \</charjSource_ci> */<endif>
22
23 >>
24
25
26 charjSource_h(pd, ids, tds, cb, debug) ::= 
27 <<
28 <if(debug)>/* \<CHARJ_SOURCE> */<endif>
29 /**************************************************************************
30  * WARNING                                                                *
31  **************************************************************************
32  * This is a machine generated header file.                               *
33  * It is not meant to be edited by hand and may be overwritten by charjc. *
34  **************************************************************************/
35
36 <pd>
37 <ids>
38 <tds>
39 <cb>
40
41 <if(debug)>/* \</CHARJ_SOURCE> */<endif>
42
43 >>
44
45
46 charjSource_cc(pd, ids, tds, cb, debug) ::= 
47 <<
48 <if(debug)>/* \<CHARJ_SOURCE> */<endif>
49 <ids>
50 <pd>
51 <tds>
52 <cb>
53 <if(debug)>/* \</CHARJ_SOURCE> */<endif>
54
55 >>
56
57 packageDeclaration_cc_h(ids) ::= 
58 <<
59 <if(debug)>/* \<packageDeclaration> */<endif>
60 namespace <ids; separator=" { namespace "> {
61 <if(debug)>/* \</packageDeclaration> */<endif>
62 >>
63
64 importDeclaration_cc_h(inc_id, use_id) ::= 
65 <<
66 <if(debug)>/* \<importDeclaration> */<endif>
67 #include \<<inc_id>\>
68 using <use_id>;
69 <if(debug)>/* \</importDeclaration> */<endif>
70 >>
71
72 classExtends_ci(type) ::= "<type>"
73
74
75 classExtends_cc_h(type) ::= "#include \<<type>.h\>"
76
77
78 interfaceExtends(ts) ::=
79 <<
80 : public <ts; separator=", public ">
81 >>
82
83
84 classDeclaration_ci(mod, ident, gen, ext, impl, ctls) ::=
85 <<
86 <if(debug)>/* \<typeDeclaration> */<endif>
87 module <ident> {
88 <if(ext)>
89     extern module <ext>;
90     chare <ident> <gen>: <ext> {
91 <else>
92     chare <ident> <gen> {
93 <endif>
94         
95         <ctls>
96     }
97 }
98 <if(debug)>/* \</typeDeclaration> */<endif>
99
100 >>
101
102
103 classDeclaration_h(mod, ident, gen, ext, impl, ctls) ::=
104 <<
105 <if(debug)>/* \<typeDeclaration> */<endif>
106
107 #include "<ident>.decl.h"
108 <ext>
109 class <ident> <gen>: public CBase_<ident> <impl> {
110     <ctls>
111 };
112 <if(debug)>/* \</typeDeclaration> */<endif>
113
114
115 >>
116
117 classDeclaration_cc(mod, ident, gen, ext, impl, ctls) ::=
118 <<
119 <if(debug)>/* \<typeDeclaration> */<endif>
120
121
122 #include "<ident>.decl.h"
123 <ext>
124 class <ident> <gen>: public CBase_<ident> <impl> {
125     <ctls>
126 };
127 #include "<ident>.def.h"
128 <if(debug)>/* \</typeDeclaration> */<endif>
129
130
131 >>
132
133
134 classTopLevelScope(classScopeDeclarations) ::= 
135 <<
136 <classScopeDeclarations; separator="\n">
137 >>
138
139
140 funcMethodDecl_h(modl, gtpl, ty, id, fpl, adl, tc, block) ::=
141 <<
142 <modl>: <ty> <gtpl> <id><fpl> <adl> <tc>;
143 >>
144
145
146 funcMethodDecl_ci(modl, gtpl, ty, id, fpl, adl, tc, block) ::=
147 <<
148 entry <ty> <gtpl> <id><fpl> <adl> <tc>;
149 >>
150
151
152 funcMethodDecl_cc(modl, gtpl, ty, id, fpl, adl, tc, block) ::=
153 <<
154 <modl>: <ty> <gtpl> <id><fpl> <adl> <tc> {
155     <block>
156 }
157 >>
158
159
160 voidMethodDecl_ci(modl, gtpl, id, fpl, tc, block) ::=
161 <<
162 entry void<gtpl> <id><fpl> <tc>;
163 >>
164
165
166 voidMethodDecl_h(modl, gtpl, id, fpl, tc, block) ::=
167 <<
168 <modl>: void<gtpl> <id><fpl> <tc>;
169 >>
170
171
172 voidMethodDecl_cc(modl, gtpl, id, fpl, tc, block) ::=
173 <<
174 <modl>: void<gtpl> <id><fpl> <tc> {
175     <block>
176 }
177 >>
178
179
180 ctorDecl_ci(modl, gtpl, id, fpl, tc, block) ::=
181 <<
182 entry void<gtpl> <id><fpl> <tc>;
183 >>
184
185
186 ctorDecl_h(modl, gtpl, id, fpl, tc, block) ::=
187 <<
188 <modl>:<gtpl> <id><fpl> <tc>;
189 >>
190
191
192 ctorDecl_cc(modl, gtpl, id, fpl, tc, block) ::=
193 <<
194 <modl>:<gtpl> <id><fpl> <tc> {
195     <block>
196 }
197 >>
198
199
200 block_cc(bsl) ::=
201 <<
202 <bsl:{s| <s><\n>}>
203 >>
204 /*{
205     <bsl; separator="\n">
206 }*/
207
208
209 embed_cc(str, blk) ::=
210 <<
211 // begin embedded block: <str>
212 <blk>
213 // end embedded block: <str>
214 >>
215
216
217 var_decl_list(var_decls) ::=
218 <<
219 <var_decls; separator=", ">
220 >>
221
222
223 var_decl(id, initializer) ::=
224 <<
225 <id> <initializer>
226 >>
227
228
229 var_decl_id(id, array_decl_list) ::=
230 <<
231 <id> <array_decl_list>
232 >>
233
234
235 var_id_decl(id, adl) ::=
236 <<
237 <id> <adl>
238 >>
239
240
241 primitive_var_decl(modList, type, declList) ::=
242 <<
243 <if(modList)>
244 <modList>: <type> <declList>;
245 <else>
246 <type> <declList>;
247 <endif>
248 >>
249
250
251 object_var_decl(modList, type, declList) ::=
252 <<
253 <if(modList)>
254 <modList>: <type>* <declList>;
255 <else>
256 <type>* <declList>;
257 <endif>
258 >>
259
260
261 type(typeID, arrDeclList) ::=
262 <<
263 <typeID><arrDeclList>
264 >>
265
266
267 typeIdent(typeID, generics) ::=
268 <<
269 <typeID><generics>
270 >>
271
272
273 generic_arg_list(types) ::=
274 <<
275 \<<types>\>
276 >>
277
278
279 formal_param_list(sdecl, vdecl) ::=
280 <<
281 <if(vdecl)>
282 (<sdecl; separator=", ">, <vdecl>)
283 <else>
284 (<sdecl; separator=", ">)
285 <endif>
286 >>
287
288
289 formal_param_decl(modList, type, declID) ::=
290 <<
291     <modList> <type> <declID>
292 >>
293
294
295 assert(cond, msg) ::=
296 <<
297 <if(msg)>
298 CkAssert(<cond> && <msg>);
299 <else>
300 CkAssert(<cond>);
301 <endif>
302 >>
303
304
305 if(cond, then, else_) ::=
306 <<
307 if (<cond>) {
308     <then>
309 }<if(else_)> else {
310     <else_>
311 }<endif>
312 >>
313
314
315 for(initializer, cond, update, body) ::=
316 <<
317 for (<initializer>; <cond>; <update>) {
318     <body>
319 }
320 >>
321
322 while(cond, body) ::=
323 <<
324 while (<cond>) {
325     <body>
326
327 >>
328
329 dowhile(cond, body) ::=
330 <<
331 do {
332     <body>
333 } while (<cond>);
334 >>
335
336
337 switch(expr, labels) ::=
338 <<
339 switch (<expr>) {
340     <labels>
341 }
342 >>
343
344 return(val) ::=
345 <<
346 return<if(val)> <val><endif>;
347 >>
348