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