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