d0c6b24e7300c8624fb7f366e77cabdf7f6234ea
[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, 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
40 <if(debug)>/* \</CHARJ_SOURCE> */<endif>
41
42 >>
43
44
45 charjSource_cc(pd, ids, tds, debug) ::=
46 <<
47 <if(debug)>/* \<CHARJ_SOURCE> */<endif>
48 <ids>
49 <pd>
50 <tds>
51 <if(debug)>/* \</CHARJ_SOURCE> */<endif>
52
53 >>
54
55 importDeclaration_cc_h(inc_id, use_id) ::= 
56 <<
57 <if(debug)>/* \<importDeclaration> */<endif>
58 #include \<<inc_id>\>
59 using <use_id>;
60 <if(debug)>/* \</importDeclaration> */<endif>
61 >>
62
63 classExtends_ci(type) ::= "<type>"
64
65
66 classExtends_cc_h(type) ::= "#include \<<type>.h\>"
67
68
69 interfaceExtends(ts) ::=
70 <<
71 : public <ts; separator=", public ">
72 >>
73
74 classDeclaration_h(sym, ident, ext, csds) ::=
75 <<
76 <sym.NamespaceOpeningString>
77 <if(ext)>
78 class <ident> : public <ext> {
79 <else>
80 class <ident> {
81 <endif>
82
83     <csds; separator="\n">
84 };
85 <sym.NamespaceClosingString>
86
87 >>
88
89 classDeclaration_cc(sym, ident, ext, csds) ::=
90 <<
91 <sym.NamespaceOpeningString>
92 <if(ext)>
93 class <ident>: public <ext> {
94 <else>
95 class <ident> {
96 <endif>
97
98     <csds; separator="\n">
99 };
100 <sym.NamespaceClosingString>
101
102 >>
103
104 chareDeclaration_cc(sym, ident, ext, csds) ::=
105 <<
106
107 #include "<ident>.decl.h"
108 <sym.NamespaceOpeningString>
109 /* superclass: <ext> */
110 class <ident>: public CBase_<ident> {
111     <csds; separator="\n">
112 };
113 <sym.NamespaceClosingString>
114 #include "<ident>.def.h"
115 >>
116
117 chareDeclaration_h(sym, ident, ext, csds) ::=
118 <<
119 #include "<ident>.decl.h"
120 <sym.NamespaceOpeningString>
121 /* superclass: <ext> */
122 class <ident>: public CBase_<ident> {
123     <csds; separator="\n">
124 };
125 <sym.NamespaceClosingString>
126 >>
127
128 chareDeclaration_ci(sym, chareType, arrayDim, ident, ext, csds) ::=
129 <<
130 <if(debug)>/* \<typeDeclaration> */<endif>
131 module <ident> {
132 <if(ext)>
133     extern module <ext>;
134 <endif>
135     <sym.NamespaceOpeningString>
136     <chareType><if(arrayDim)> [<arrayDim>]<endif> <ident><if(ext)> : <ext><endif> {
137         <csds; separator="\n">
138     }
139     <sym.NamespaceClosingString>
140 }
141
142 <if(debug)>/* \</typeDeclaration> */<endif>
143
144 >>
145
146
147 funcMethodDecl_h(modl, gtpl, ty, id, fpl, adl, block) ::=
148 <<
149 <if(modl)><modl>: <endif><ty> <gtpl> <id><fpl> <adl>;
150 >>
151
152
153 funcMethodDecl_ci(modl, gtpl, ty, id, fpl, adl, block) ::=
154 <<
155 entry <ty> <gtpl> <id><fpl> <adl>;
156 >>
157
158
159 funcMethodDecl_cc(modl, gtpl, ty, id, fpl, adl, block) ::=
160 <<
161 <if(modl)><modl>: <endif><ty> <gtpl> <id><fpl> <adl> {
162     <block>
163 }
164 >>
165
166
167 voidMethodDecl_ci(modl, gtpl, id, fpl, block) ::=
168 <<
169 entry void<gtpl> <id><fpl>;
170 >>
171
172
173 voidMethodDecl_h(modl, gtpl, id, fpl, block) ::=
174 <<
175 <if(modl)><modl>: <endif>void<gtpl> <id><fpl>;
176 >>
177
178
179 voidMethodDecl_cc(modl, gtpl, id, fpl, block) ::=
180 <<
181 <if(modl)><modl>: <endif>void<gtpl> <id><fpl> {
182     <block>
183 }
184 >>
185
186
187 ctorDecl_ci(modl, gtpl, id, fpl, block) ::=
188 <<
189 entry void<gtpl> <id><fpl>;
190 >>
191
192
193 ctorDecl_h(modl, gtpl, id, fpl, block) ::=
194 <<
195 <if(modl)><modl>:<endif><gtpl> <id><fpl>;
196 >>
197
198
199 ctorDecl_cc(modl, gtpl, id, fpl, block) ::=
200 <<
201 <if(modl)><modl>:<endif><gtpl> <id><fpl> {
202     <block>
203 }
204 >>
205
206
207 block_cc(bsl) ::=
208 <<
209 <bsl:{s| <s><\n>}>
210 >>
211
212
213 embed_cc(str, blk) ::=
214 <<
215 // begin embedded block: <str>
216 <blk>
217 // end embedded block: <str>
218 >>
219
220
221 class_var_decl(modl, type, declList) ::=
222 <<
223 <if(modl)><modl>:<else>public:<endif> <type> <declList>;
224 >>
225
226
227 var_decl_list(var_decls) ::=
228 <<
229 <var_decls; separator=", ">
230 >>
231
232
233 var_decl(id, initializer) ::=
234 <<
235 <id><if(initializer)> = <initializer><endif>
236 >>
237
238
239 var_decl_id(id, array_decl_list) ::=
240 <<
241 <id><if(array_decl_list)> <array_decl_list><endif>
242 >>
243
244
245 var_id_decl(id, adl) ::=
246 <<
247 <id><if(adl)> <adl><endif>
248 >>
249
250
251 mod_list(mods) ::=
252 <<
253 <if(mods)><mods; separator=" "><endif>
254 >>
255
256
257 local_mod_list(mods) ::=
258 <<
259 <if(mods)><mods; separator=" "><endif>
260 >>
261  
262
263 local_var_decl(modList, type, declList) ::=
264 <<
265 <if(modList)>
266 <modList> <type> <declList>;
267 <else>
268 <type> <declList>;
269 <endif>
270 >>
271
272
273 type(typeID, arrDeclList) ::=
274 <<
275 <typeID><arrDeclList>
276 >>
277
278
279 typeIdent(typeID, generics) ::=
280 <<
281 <typeID><generics>
282 >>
283
284
285 generic_arg_list(types) ::=
286 <<
287 \<<types>\>
288 >>
289
290
291 formal_param_list(sdecl, vdecl) ::=
292 <<
293 <if(vdecl)>
294 (<sdecl; separator=", ">, <vdecl>)
295 <else>
296 (<sdecl; separator=", ">)
297 <endif>
298 >>
299
300
301 formal_param_decl(modList, type, declID) ::=
302 <<
303 <if(modList)><modList> <endif><type> <declID>
304 >>
305
306
307 assert(cond, msg) ::=
308 <<
309 <if(msg)>
310 CkAssert(<cond> && <msg>);
311 <else>
312 CkAssert(<cond>);
313 <endif>
314 >>
315
316
317 if(cond, then, else_) ::=
318 <<
319 if <cond> {
320     <then>
321 }<if(else_)> else {
322     <else_>
323 }<endif>
324 >>
325
326
327 for(initializer, cond, update, body) ::=
328 <<
329 for (<if(initializer)><initializer><else>;<endif> <cond>; <update; separator=", ">) {
330     <body>
331 }
332 >>
333
334 while(cond, body) ::=
335 <<
336 while <cond> {
337     <body>
338
339 >>
340
341 dowhile(cond, body) ::=
342 <<
343 do {
344     <body>
345 } while <cond>;
346 >>
347
348
349 switch(expr, labels) ::=
350 <<
351 switch <expr> {
352     <labels>
353 }
354 >>
355
356 return(val) ::=
357 <<
358 return<if(val)> <val><endif>;
359 >>
360
361 label(text, stmt) ::=
362 <<
363 <text>: <stmt>
364 >>
365
366 case(expr, block) ::=
367 <<
368 case <expr>: <block>
369 >>
370
371 method_call(primary, generic_types, args) ::=
372 <<
373 <if(generic_types)>
374 <primary>\<<generic_types>\>(<args>)
375 <else>
376 <primary>(<args>)
377 <endif>
378 >>
379
380
381 array_construction_with_init(array_decls, initializer) ::=
382 <<
383 <array_decls> = {<initializer>};
384 >>
385
386
387 array_construction(exprs, array_decls) ::=
388 <<
389 [<exprs; separator="][">]<array_decls>
390 >> 
391
392
393 arguments(exprs) ::=
394 <<
395 <exprs; separator=", ">
396 >>
397
398