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 <if(debug)>/* \<typeDeclaration> */<endif>
86
87 #include "<ident>.decl.h"
88 /* superclass: <ext> */
89 class <ident>: public CBase_<ident> {
90     <csds; separator="\n">
91 };
92 <if(debug)>/* \</typeDeclaration> */<endif>
93
94 >>
95
96 templateDeclaration_h(ident, class1) ::=
97 <<
98 template \<class <ident>\>
99 <class1>
100 >>
101
102 classDeclaration_cc(ident, ext, csds) ::=
103 <<
104 <if(debug)>/* \<typeDeclaration> */<endif>
105
106
107 #include "<ident>.decl.h"
108 /* superclass: <ext> */
109 class <ident>: public CBase_<ident> {
110     <csds; separator="\n">
111 };
112 #include "<ident>.def.h"
113 <if(debug)>/* \</typeDeclaration> */<endif>
114
115 >>
116
117
118 charedeclaration_ci(chareType, arrayDim, ident, ext, csds) ::=
119 <<
120 <if(debug)>/* \<typeDeclaration> */<endif>
121 module <ident> {
122 <if(ext)>
123     extern module <ext>;
124     <chareType><if(arrayDim)> [<arrayDim>]<endif> <ident>: <ext> {
125 <else>
126     <chareType><if(arrayDim)> [<arrayDim>]<endif> <ident> {
127 <endif>
128         <csds; separator="\n">
129     }
130 }
131
132 <if(debug)>/* \</typeDeclaration> */<endif>
133
134 >>
135
136
137 funcMethodDecl_h(modl, gtpl, ty, id, fpl, adl, block) ::=
138 <<
139 <if(modl)><modl>: <endif><ty> <gtpl> <id><fpl> <adl>;
140 >>
141
142
143 funcMethodDecl_ci(modl, gtpl, ty, id, fpl, adl, block) ::=
144 <<
145 entry <ty> <gtpl> <id><fpl> <adl>;
146 >>
147
148
149 funcMethodDecl_cc(modl, gtpl, ty, id, fpl, adl, block) ::=
150 <<
151 <if(modl)><modl>: <endif><ty> <gtpl> <id><fpl> <adl> {
152     <block>
153 }
154 >>
155
156
157 voidMethodDecl_ci(modl, gtpl, id, fpl, block) ::=
158 <<
159 entry void<gtpl> <id><fpl>;
160 >>
161
162
163 voidMethodDecl_h(modl, gtpl, id, fpl, block) ::=
164 <<
165 <if(modl)><modl>: <endif>void<gtpl> <id><fpl>;
166 >>
167
168
169 voidMethodDecl_cc(modl, gtpl, id, fpl, block) ::=
170 <<
171 <if(modl)><modl>: <endif>void<gtpl> <id><fpl> {
172     <block>
173 }
174 >>
175
176
177 ctorDecl_ci(modl, gtpl, id, fpl, block) ::=
178 <<
179 entry void<gtpl> <id><fpl>;
180 >>
181
182
183 ctorDecl_h(modl, gtpl, id, fpl, block) ::=
184 <<
185 <if(modl)><modl>:<endif><gtpl> <id><fpl>;
186 >>
187
188
189 ctorDecl_cc(modl, gtpl, id, fpl, block) ::=
190 <<
191 <if(modl)><modl>:<endif><gtpl> <id><fpl> {
192     <block>
193 }
194 >>
195
196
197 block_cc(bsl) ::=
198 <<
199 <bsl:{s| <s><\n>}>
200 >>
201
202
203 embed_cc(str, blk) ::=
204 <<
205 // begin embedded block: <str>
206 <blk>
207 // end embedded block: <str>
208 >>
209
210
211 class_var_decl(modl, type, declList) ::=
212 <<
213 <if(modl)><modl>:<else>public:<endif> <type> <declList>;
214 >>
215
216
217 var_decl_list(var_decls) ::=
218 <<
219 <var_decls; separator=", ">
220 >>
221
222
223 var_decl(id, initializer) ::=
224 <<
225 <id><if(initializer)> = <initializer><endif>
226 >>
227
228
229 var_decl_id(id, array_decl_list) ::=
230 <<
231 <id><if(array_decl_list)> <array_decl_list><endif>
232 >>
233
234
235 var_id_decl(id, adl) ::=
236 <<
237 <id><if(adl)> <adl><endif>
238 >>
239
240
241 mod_list(mods) ::=
242 <<
243 <if(mods)><mods; separator=" "><endif>
244 >>
245
246
247 local_mod_list(mods) ::=
248 <<
249 <if(mods)><mods; separator=" "><endif>
250 >>
251  
252
253 local_var_decl(modList, type, declList) ::=
254 <<
255 <if(modList)>
256 <modList> <type> <declList>;
257 <else>
258 <type> <declList>;
259 <endif>
260 >>
261
262
263 type(typeID, arrDeclList) ::=
264 <<
265 <typeID><arrDeclList>
266 >>
267
268
269 typeIdent(typeID, generics) ::=
270 <<
271 <typeID><generics>
272 >>
273
274
275 generic_arg_list(types) ::=
276 <<
277 \<<types>\>
278 >>
279
280
281 formal_param_list(sdecl, vdecl) ::=
282 <<
283 <if(vdecl)>
284 (<sdecl; separator=", ">, <vdecl>)
285 <else>
286 (<sdecl; separator=", ">)
287 <endif>
288 >>
289
290
291 formal_param_decl(modList, type, declID) ::=
292 <<
293 <if(modList)><modList> <endif><type> <declID>
294 >>
295
296
297 assert(cond, msg) ::=
298 <<
299 <if(msg)>
300 CkAssert(<cond> && <msg>);
301 <else>
302 CkAssert(<cond>);
303 <endif>
304 >>
305
306
307 if(cond, then, else_) ::=
308 <<
309 if <cond> {
310     <then>
311 }<if(else_)> else {
312     <else_>
313 }<endif>
314 >>
315
316
317 for(initializer, cond, update, body) ::=
318 <<
319 for (<initializer> <cond> <update>) {
320     <body>
321 }
322 >>
323
324 while(cond, body) ::=
325 <<
326 while <cond> {
327     <body>
328
329 >>
330
331 dowhile(cond, body) ::=
332 <<
333 do {
334     <body>
335 } while <cond>;
336 >>
337
338
339 switch(expr, labels) ::=
340 <<
341 switch <expr> {
342     <labels>
343 }
344 >>
345
346 return(val) ::=
347 <<
348 return<if(val)> <val><endif>;
349 >>
350
351 label(text, stmt) ::=
352 <<
353 <text>: <stmt>
354 >>
355
356 case(expr, block) ::=
357 <<
358 case <expr>: <block>
359 >>
360
361 for_cond(expr) ::=
362 <<
363 <expr>
364 >>
365
366 for_update(exprs) ::=
367 <<
368 <exprs; separator=", ">
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