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