Template declaration, semantics still need some work
[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 classDeclaration_h(ident, ext, csds) ::=
84 <<
85 /* superclass: <ext> */
86 class <ident>: public CBase_<ident> {
87     <csds; separator="\n">
88 };
89 >>
90
91 classWrapper_h(ident, ext, csds, class1) ::=
92 <<
93 <if(debug)>/* \<typeDeclaration> */<endif>
94
95 #include "<ident>.decl.h"
96
97 <classDeclaration_h(ident=ident, ext=ext, csds=csds)>
98
99 <if(debug)>/* \</typeDeclaration> */<endif>
100 >>
101
102 templateDeclaration_h(tident, ident, ext, csds) ::=
103 <<
104 #include "<ident>.decl.h"
105 template \<class <tident; separator=", class ">\>
106 <classDeclaration_h(ident=ident, ext=ext, csds=csds)>
107 >>
108
109 classDeclaration_cc(ident, ext, csds) ::=
110 <<
111 <if(debug)>/* \<typeDeclaration> */<endif>
112
113
114 #include "<ident>.decl.h"
115 /* superclass: <ext> */
116 class <ident>: public CBase_<ident> {
117     <csds; separator="\n">
118 };
119 #include "<ident>.def.h"
120 <if(debug)>/* \</typeDeclaration> */<endif>
121
122 >>
123
124
125 charedeclaration_ci(chareType, arrayDim, ident, ext, csds) ::=
126 <<
127 <if(debug)>/* \<typeDeclaration> */<endif>
128 module <ident> {
129 <if(ext)>
130     extern module <ext>;
131     <chareType><if(arrayDim)> [<arrayDim>]<endif> <ident>: <ext> {
132 <else>
133     <chareType><if(arrayDim)> [<arrayDim>]<endif> <ident> {
134 <endif>
135         <csds; separator="\n">
136     }
137 }
138
139 <if(debug)>/* \</typeDeclaration> */<endif>
140
141 >>
142
143
144 funcMethodDecl_h(modl, gtpl, ty, id, fpl, adl, block) ::=
145 <<
146 <if(modl)><modl>: <endif><ty> <gtpl> <id><fpl> <adl>;
147 >>
148
149
150 funcMethodDecl_ci(modl, gtpl, ty, id, fpl, adl, block) ::=
151 <<
152 entry <ty> <gtpl> <id><fpl> <adl>;
153 >>
154
155
156 funcMethodDecl_cc(modl, gtpl, ty, id, fpl, adl, block) ::=
157 <<
158 <if(modl)><modl>: <endif><ty> <gtpl> <id><fpl> <adl> {
159     <block>
160 }
161 >>
162
163
164 voidMethodDecl_ci(modl, gtpl, id, fpl, block) ::=
165 <<
166 entry void<gtpl> <id><fpl>;
167 >>
168
169
170 voidMethodDecl_h(modl, gtpl, id, fpl, block) ::=
171 <<
172 <if(modl)><modl>: <endif>void<gtpl> <id><fpl>;
173 >>
174
175
176 voidMethodDecl_cc(modl, gtpl, id, fpl, block) ::=
177 <<
178 <if(modl)><modl>: <endif>void<gtpl> <id><fpl> {
179     <block>
180 }
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>:<endif><gtpl> <id><fpl>;
193 >>
194
195
196 ctorDecl_cc(modl, gtpl, id, fpl, block) ::=
197 <<
198 <if(modl)><modl>:<endif><gtpl> <id><fpl> {
199     <block>
200 }
201 >>
202
203
204 block_cc(bsl) ::=
205 <<
206 <bsl:{s| <s><\n>}>
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 typeIdent(typeID, generics) ::=
277 <<
278 <typeID><generics>
279 >>
280
281
282 generic_arg_list(types) ::=
283 <<
284 \<<types>\>
285 >>
286
287
288 formal_param_list(sdecl, vdecl) ::=
289 <<
290 <if(vdecl)>
291 (<sdecl; separator=", ">, <vdecl>)
292 <else>
293 (<sdecl; separator=", ">)
294 <endif>
295 >>
296
297
298 formal_param_decl(modList, type, declID) ::=
299 <<
300 <if(modList)><modList> <endif><type> <declID>
301 >>
302
303
304 assert(cond, msg) ::=
305 <<
306 <if(msg)>
307 CkAssert(<cond> && <msg>);
308 <else>
309 CkAssert(<cond>);
310 <endif>
311 >>
312
313
314 if(cond, then, else_) ::=
315 <<
316 if <cond> {
317     <then>
318 }<if(else_)> else {
319     <else_>
320 }<endif>
321 >>
322
323
324 for(initializer, cond, update, body) ::=
325 <<
326 for (<initializer> <cond> <update>) {
327     <body>
328 }
329 >>
330
331 while(cond, body) ::=
332 <<
333 while <cond> {
334     <body>
335
336 >>
337
338 dowhile(cond, body) ::=
339 <<
340 do {
341     <body>
342 } while <cond>;
343 >>
344
345
346 switch(expr, labels) ::=
347 <<
348 switch <expr> {
349     <labels>
350 }
351 >>
352
353 return(val) ::=
354 <<
355 return<if(val)> <val><endif>;
356 >>
357
358 label(text, stmt) ::=
359 <<
360 <text>: <stmt>
361 >>
362
363 case(expr, block) ::=
364 <<
365 case <expr>: <block>
366 >>
367
368 for_cond(expr) ::=
369 <<
370 <expr>
371 >>
372
373 for_update(exprs) ::=
374 <<
375 <exprs; separator=", ">
376 >>
377
378 method_call(primary, generic_types, args) ::=
379 <<
380 <if(generic_types)>
381 <primary>\<<generic_types>\>(<args>)
382 <else>
383 <primary>(<args>)
384 <endif>
385 >>
386
387
388 array_construction_with_init(array_decls, initializer) ::=
389 <<
390 <array_decls> = {<initializer>};
391 >>
392
393
394 array_construction(exprs, array_decls) ::=
395 <<
396 [<exprs; separator="][">]<array_decls>
397 >> 
398
399
400 arguments(exprs) ::=
401 <<
402 <exprs; separator=", ">
403 >>
404
405