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