18363b1b11e844c8505901eea0ed7b5cd4ff1f4b
[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>;
62 }>
63 <classDeclaration_h_cont(pds = sym.packageNames, sym = sym, ident = ident, ext = ext, csds = csds)>
64 >>
65
66 classDeclaration_h_cont(pds, sym, ident, ext, csds) ::=
67 <<
68 <if(first(pds))>namespace <first(pds)>
69 {
70     <classDeclaration_h_cont(pds = rest(pds), sym = sym, ident = ident, ext = ext, csds = csds)>
71 } // namespace <first(pds)>
72 <else>
73 <if(ext)>
74 class <ident> : public <ext> {
75 <else>
76 class <ident> {
77 <endif>
78
79     <csds; separator="\n\n">
80 };
81 <endif>
82 >>
83
84
85 classDeclaration_cc(sym, ident, ext, csds) ::=
86 <<
87 <sym.IncludeString>
88 <classDeclaration_cc_cont(pds = sym.packageNames, sym = sym, ident = ident, ext = ext, csds = csds)>
89 >>
90
91 classDeclaration_cc_cont(pds, sym, ident, ext, csds) ::=
92 <<
93 <if(first(pds))>namespace <first(pds)>
94 {
95     <classDeclaration_cc_cont(pds = rest(pds), sym = sym, ident = ident, ext = ext, csds = csds)>
96 } // namespace <first(pds)>
97 <else>
98 <csds; separator="\n\n">
99 <endif>
100 >>
101
102
103 chareDeclaration_cc(sym, ident, ext, csds) ::=
104 <<
105 #include "<ident>.decl.h"
106 <chareDeclaration_cc_cont(pds = sym.packageNames, sym = sym, ident = ident, ext = ext, csds = csds)>
107 #include "<ident>.def.h"
108 >>
109
110 chareDeclaration_cc_cont(pds, sym, ident, ext, csds) ::=
111 <<
112 <if(first(pds))>namespace <first(pds)>
113 {
114     <chareDeclaration_cc_cont(pds = rest(pds), sym = sym, ident = ident, ext = ext, csds = csds)>
115 } // namespace <first(pds)>
116 <else>
117 <csds; separator="\n\n">
118 <endif>
119 >>
120
121 chareDeclaration_h(sym, ident, ext, csds) ::=
122 <<
123 #include "<ident>.decl.h"
124 <chareDeclaration_h_cont(pds = sym.packageNames, sym = sym, ident = ident, ext = ext, csds = csds)>
125 >>
126
127 chareDeclaration_h_cont(pds, sym, ident, ext, csds) ::=
128 <<
129 <if(first(pds))>namespace <first(pds)>
130 {
131     <chareDeclaration_h_cont(pds = rest(pds), sym = sym, ident = ident, ext = ext, csds = csds)>
132 } // namespace <first(pds)>
133 <else>
134 <if(ext)>/* superclass: <ext> */<endif>
135 class <ident>: public CBase_<ident> {
136     <csds; separator="\n">
137 };
138 <endif>
139 >>
140
141 chareDeclaration_ci(sym, chareType, arrayDim, ident, ext, csds) ::=
142 <<
143 module <ident> {
144 <if(ext)>
145     extern module <ext>;
146 <endif>
147     <chareDeclaration_ci_cont(pds = sym.packageNames, chareType = chareType, arrayDim = arrayDim, ident = ident, ext = ext, csds = csds)>
148 }
149 >>
150
151
152 chareDeclaration_ci_cont(pds, sym, chareType, arrayDim, ident, ext, csds) ::=
153 <<
154 <if(first(pds))>namespace <first(pds)>
155 {
156     <chareDeclaration_ci_cont(pds = rest(pds), sym = sym, chareType = chareType, arrayDim = arrayDim, ident = ident, ext = ext, csds = csds)>
157 } // namespace <first(pds)>
158 <else>
159 <chareType><if(arrayDim)> [<arrayDim>]<endif> <ident><if(ext)> : <ext><endif> {
160     <csds; separator="\n">
161 };
162 <endif>
163 >>
164
165 funcMethodDecl_h(modl, gtpl, ty, id, fpl, adl, block) ::=
166 <<
167 <if(first(modl))><modl; separator=" ">: <endif><ty><gtpl> <id><fpl><adl>;
168 >>
169
170
171 funcMethodDecl_ci(modl, gtpl, ty, id, fpl, adl, block) ::=
172 <<
173 entry <ty><gtpl> <id><fpl><adl>;
174 >>
175
176
177 funcMethodDecl_cc(sym, modl, gtpl, ty, id, fpl, adl, block) ::=
178 <<
179 <ty><gtpl> <sym.Name>::<id><fpl><adl>
180 <block>
181 >>
182
183
184 ctorDecl_ci(modl, gtpl, id, fpl, block) ::=
185 <<
186 entry void<gtpl> <id><fpl>;
187 >>
188
189
190 ctorDecl_h(modl, gtpl, id, fpl, block) ::=
191 <<
192 <if(modl)><modl; separator=" ">: <endif><id><fpl>;
193 >>
194
195
196 ctorDecl_cc(modl, gtpl, id, fpl, block) ::=
197 <<
198 <id>::<id><fpl>
199 <block>
200 >>
201
202
203 block_cc(bsl) ::=
204 <<
205 {
206     <bsl; separator="\n">
207 }
208 >>
209
210
211 embed_cc(str, blk) ::=
212 <<
213 // begin embedded block: <str>
214 <blk>
215 // end embedded block: <str>
216 >>
217
218
219 class_var_decl(modl, type, declList) ::=
220 <<
221 <if(modl)><modl>:<else>public:<endif> <type> <declList>;
222 >>
223
224
225 var_decl_list(var_decls) ::=
226 <<
227 <var_decls; separator=", ">
228 >>
229
230
231 var_decl(id, initializer) ::=
232 <<
233 <id><if(initializer)> = <initializer><endif>
234 >>
235
236
237 var_decl_id(id, array_decl_list) ::=
238 <<
239 <id><if(array_decl_list)> <array_decl_list><endif>
240 >>
241
242
243 var_id_decl(id, adl) ::=
244 <<
245 <id><if(adl)> <adl><endif>
246 >>
247
248
249 mod_list(mods) ::=
250 <<
251 <if(mods)><mods; separator=" "><endif>
252 >>
253
254
255 local_mod_list(mods) ::=
256 <<
257 <if(mods)><mods; separator=" "><endif>
258 >>
259
260
261 local_var_decl(modList, type, declList) ::=
262 <<
263 <if(modList)>
264 <modList> <type> <declList>;
265 <else>
266 <type> <declList>;
267 <endif>
268 >>
269
270
271 simple_type(typeID, arrDeclList) ::=
272 <<
273 <typeID><arrDeclList>
274 >>
275
276
277 obj_type(typeID, arrDeclList) ::=
278 <<
279 <typeID><arrDeclList>
280 >>
281
282 proxy_type(typeID, arrDeclList) ::=
283 <<
284 CProxy_<typeID><arrDeclList>
285 >>
286
287 pointer_type(typeID, arrDeclList) ::=
288 <<
289 <typeID>*<arrDeclList>
290 >>
291
292 reference_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> <then><if(else_)> else <else_><endif>
339 >>
340
341
342 for(initializer, cond, update, body) ::=
343 <<
344 for (<if(initializer)><initializer><else>;<endif> <cond>; <update; separator=", ">) <body>
345 >>
346
347 while(cond, body) ::=
348 <<
349 while <cond> <body>
350 >>
351
352 dowhile(cond, body) ::=
353 <<
354 do <body> while <cond>;
355 >>
356
357
358 switch(expr, labels) ::=
359 <<
360 switch <expr> {
361     <labels>
362 }
363 >>
364
365 return(val) ::=
366 <<
367 return<if(val)> <val><endif>;
368 >>
369
370 label(text, stmt) ::=
371 <<
372 <text>: <stmt>
373 >>
374
375 case(expr, block) ::=
376 <<
377 case <expr>: <block>
378 >>
379
380 method_call(primary, generic_types, args) ::=
381 <<
382 <if(generic_types)>
383 <primary>\<<generic_types>\>(<args>)
384 <else>
385 <primary>(<args>)
386 <endif>
387 >>
388
389
390 array_construction_with_init(array_decls, initializer) ::=
391 <<
392 <array_decls> = {<initializer>};
393 >>
394
395
396 array_construction(exprs, array_decls) ::=
397 <<
398 [<exprs; separator="][">]<array_decls>
399 >>
400
401
402 arguments(exprs) ::=
403 <<
404 <exprs; separator=", ">
405 >>
406
407