~ubuntu-branches/debian/sid/kdevelop/sid

« back to all changes in this revision

Viewing changes to languages/java/java.tree.g

  • Committer: Bazaar Package Importer
  • Author(s): Jeremy Lainé
  • Date: 2006-05-23 18:39:42 UTC
  • Revision ID: james.westby@ubuntu.com-20060523183942-hucifbvh68k2bwz7
Tags: upstream-3.3.2
Import upstream version 3.3.2

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
options {
 
2
        language="Cpp";
 
3
}
 
4
 
 
5
/** Java 1.3 AST Recognizer Grammar
 
6
 *
 
7
 * Author: (see java.g preamble)
 
8
 *
 
9
 * Version tracking now done with following ID:
 
10
 *
 
11
 * $Id: java.tree.g 255671 2003-10-02 13:45:46Z  $
 
12
 *
 
13
 * This grammar is in the PUBLIC DOMAIN
 
14
 */
 
15
 
 
16
class JavaTreeParser extends TreeParser;
 
17
 
 
18
options {
 
19
        importVocab = Java;
 
20
}
 
21
 
 
22
compilationUnit
 
23
        :       (packageDefinition)?
 
24
                (importDefinition)*
 
25
                (typeDefinition)*
 
26
        ;
 
27
 
 
28
packageDefinition
 
29
        :       #( PACKAGE_DEF identifier )
 
30
        ;
 
31
 
 
32
importDefinition
 
33
        :       #( IMPORT identifierStar )
 
34
        ;
 
35
 
 
36
typeDefinition
 
37
        :       #(CLASS_DEF modifiers IDENT extendsClause implementsClause objBlock )
 
38
        |       #(INTERFACE_DEF modifiers IDENT extendsClause interfaceBlock )
 
39
        ;
 
40
 
 
41
typeSpec
 
42
        :       #(TYPE typeSpecArray)
 
43
        ;
 
44
 
 
45
typeSpecArray
 
46
        :       #( ARRAY_DECLARATOR typeSpecArray )
 
47
        |       type
 
48
        ;
 
49
 
 
50
type:   identifier
 
51
        |       builtInType
 
52
        ;
 
53
 
 
54
builtInType
 
55
    :   "void"
 
56
    |   "boolean"
 
57
    |   "byte"
 
58
    |   "char"
 
59
    |   "short"
 
60
    |   "int"
 
61
    |   "float"
 
62
    |   "long"
 
63
    |   "double"
 
64
    ;
 
65
 
 
66
modifiers
 
67
        :       #( MODIFIERS (modifier)* )
 
68
        ;
 
69
 
 
70
modifier
 
71
    :   "private"
 
72
    |   "public"
 
73
    |   "protected"
 
74
    |   "static"
 
75
    |   "transient"
 
76
    |   "final"
 
77
    |   "abstract"
 
78
    |   "native"
 
79
    |   "threadsafe"
 
80
    |   "synchronized"
 
81
    |   "const"
 
82
    |   "volatile"
 
83
        |       "strictfp"
 
84
    ;
 
85
 
 
86
extendsClause
 
87
        :       #(EXTENDS_CLAUSE (identifier)* )
 
88
        ;
 
89
 
 
90
implementsClause
 
91
        :       #(IMPLEMENTS_CLAUSE (identifier)* )
 
92
        ;
 
93
 
 
94
interfaceBlock
 
95
        :       #(      OBJBLOCK
 
96
                        (       methodDecl
 
97
                        |       variableDef
 
98
                        )*
 
99
                )
 
100
        ;
 
101
 
 
102
objBlock
 
103
        :       #(      OBJBLOCK
 
104
                        (       ctorDef
 
105
                        |       methodDef
 
106
                        |       variableDef
 
107
                        |       typeDefinition
 
108
                        |       #(STATIC_INIT slist)
 
109
                        |       #(INSTANCE_INIT slist)
 
110
                        )*
 
111
                )
 
112
        ;
 
113
 
 
114
ctorDef
 
115
        :       #(CTOR_DEF modifiers methodHead (slist)?)
 
116
        ;
 
117
 
 
118
methodDecl
 
119
        :       #(METHOD_DEF modifiers typeSpec methodHead)
 
120
        ;
 
121
 
 
122
methodDef
 
123
        :       #(METHOD_DEF modifiers typeSpec methodHead (slist)?)
 
124
        ;
 
125
 
 
126
variableDef
 
127
        :       #(VARIABLE_DEF modifiers typeSpec variableDeclarator varInitializer)
 
128
        ;
 
129
 
 
130
parameterDef
 
131
        :       #(PARAMETER_DEF modifiers typeSpec IDENT )
 
132
        ;
 
133
 
 
134
objectinitializer
 
135
        :       #(INSTANCE_INIT slist)
 
136
        ;
 
137
 
 
138
variableDeclarator
 
139
        :       IDENT
 
140
        |       LBRACK variableDeclarator
 
141
        ;
 
142
 
 
143
varInitializer
 
144
        :       #(ASSIGN initializer)
 
145
        |
 
146
        ;
 
147
 
 
148
initializer
 
149
        :       expression
 
150
        |       arrayInitializer
 
151
        ;
 
152
 
 
153
arrayInitializer
 
154
        :       #(ARRAY_INIT (initializer)*)
 
155
        ;
 
156
 
 
157
methodHead
 
158
        :       IDENT #( PARAMETERS (parameterDef)* ) (throwsClause)?
 
159
        ;
 
160
 
 
161
throwsClause
 
162
        :       #( "throws" (identifier)* )
 
163
        ;
 
164
 
 
165
identifier
 
166
        :       IDENT
 
167
        |       #( DOT identifier IDENT )
 
168
        ;
 
169
 
 
170
identifierStar
 
171
        :       IDENT
 
172
        |       #( DOT identifier (STAR|IDENT) )
 
173
        ;
 
174
 
 
175
slist
 
176
        :       #( SLIST (stat)* )
 
177
        ;
 
178
 
 
179
stat:   typeDefinition
 
180
        |       variableDef
 
181
        |       expression
 
182
        |       #(LABELED_STAT IDENT stat)
 
183
        |       #("if" expression stat (stat)? )
 
184
        |       #(      "for"
 
185
                        #(FOR_INIT (variableDef | elist)?)
 
186
                        #(FOR_CONDITION (expression)?)
 
187
                        #(FOR_ITERATOR (elist)?)
 
188
                        stat
 
189
                )
 
190
        |       #("while" expression stat)
 
191
        |       #("do" stat expression)
 
192
        |       #("break" (IDENT)? )
 
193
        |       #("continue" (IDENT)? )
 
194
        |       #("return" (expression)? )
 
195
        |       #("switch" expression (caseGroup)*)
 
196
        |       #("throw" expression)
 
197
        |       #("synchronized" expression stat)
 
198
        |       tryBlock
 
199
        |       slist // nested SLIST
 
200
    // uncomment to make assert JDK 1.4 stuff work
 
201
    // |   #("assert" expression (expression)?)
 
202
        |       EMPTY_STAT
 
203
        ;
 
204
 
 
205
caseGroup
 
206
        :       #(CASE_GROUP (#("case" expression) | "default")+ slist)
 
207
        ;
 
208
 
 
209
tryBlock
 
210
        :       #( "try" slist (handler)* (#("finally" slist))? )
 
211
        ;
 
212
 
 
213
handler
 
214
        :       #( "catch" parameterDef slist )
 
215
        ;
 
216
 
 
217
elist
 
218
        :       #( ELIST (expression)* )
 
219
        ;
 
220
 
 
221
expression
 
222
        :       #(EXPR expr)
 
223
        ;
 
224
 
 
225
expr:   #(QUESTION expr expr expr)      // trinary operator
 
226
        |       #(ASSIGN expr expr)                     // binary operators...
 
227
        |       #(PLUS_ASSIGN expr expr)
 
228
        |       #(MINUS_ASSIGN expr expr)
 
229
        |       #(STAR_ASSIGN expr expr)
 
230
        |       #(DIV_ASSIGN expr expr)
 
231
        |       #(MOD_ASSIGN expr expr)
 
232
        |       #(SR_ASSIGN expr expr)
 
233
        |       #(BSR_ASSIGN expr expr)
 
234
        |       #(SL_ASSIGN expr expr)
 
235
        |       #(BAND_ASSIGN expr expr)
 
236
        |       #(BXOR_ASSIGN expr expr)
 
237
        |       #(BOR_ASSIGN expr expr)
 
238
        |       #(LOR expr expr)
 
239
        |       #(LAND expr expr)
 
240
        |       #(BOR expr expr)
 
241
        |       #(BXOR expr expr)
 
242
        |       #(BAND expr expr)
 
243
        |       #(NOT_EQUAL expr expr)
 
244
        |       #(EQUAL expr expr)
 
245
        |       #(LT_ expr expr)
 
246
        |       #(GT expr expr)
 
247
        |       #(LE expr expr)
 
248
        |       #(GE expr expr)
 
249
        |       #(SL expr expr)
 
250
        |       #(SR expr expr)
 
251
        |       #(BSR expr expr)
 
252
        |       #(PLUS expr expr)
 
253
        |       #(MINUS expr expr)
 
254
        |       #(DIV expr expr)
 
255
        |       #(MOD expr expr)
 
256
        |       #(STAR expr expr)
 
257
        |       #(INC expr)
 
258
        |       #(DEC expr)
 
259
        |       #(POST_INC expr)
 
260
        |       #(POST_DEC expr)
 
261
        |       #(BNOT expr)
 
262
        |       #(LNOT expr)
 
263
        |       #("instanceof" expr expr)
 
264
        |       #(UNARY_MINUS expr)
 
265
        |       #(UNARY_PLUS expr)
 
266
        |       primaryExpression
 
267
        ;
 
268
 
 
269
primaryExpression
 
270
    :   IDENT
 
271
    |   #(      DOT
 
272
                        (       expr
 
273
                                (       IDENT
 
274
                                |       arrayIndex
 
275
                                |       "this"
 
276
                                |       "class"
 
277
                                |       #( "new" IDENT elist )
 
278
                                |   "super"
 
279
                                )
 
280
                        |       #(ARRAY_DECLARATOR typeSpecArray)
 
281
                        |       builtInType ("class")?
 
282
                        )
 
283
                )
 
284
        |       arrayIndex
 
285
        |       #(METHOD_CALL primaryExpression elist)
 
286
        |       ctorCall
 
287
        |       #(TYPECAST typeSpec expr)
 
288
        |   newExpression
 
289
        |   constant
 
290
    |   "super"
 
291
    |   "true"
 
292
    |   "false"
 
293
    |   "this"
 
294
    |   "null"
 
295
        |       typeSpec // type name used with instanceof
 
296
        ;
 
297
 
 
298
ctorCall
 
299
        :       #( CTOR_CALL elist )
 
300
        |       #( SUPER_CTOR_CALL
 
301
                        (       elist
 
302
                        |       primaryExpression elist
 
303
                        )
 
304
                 )
 
305
        ;
 
306
 
 
307
arrayIndex
 
308
        :       #(INDEX_OP expr expression)
 
309
        ;
 
310
 
 
311
constant
 
312
    :   NUM_INT
 
313
    |   CHAR_LITERAL
 
314
    |   STRING_LITERAL
 
315
    |   NUM_FLOAT
 
316
    |   NUM_DOUBLE
 
317
    |   NUM_LONG
 
318
    ;
 
319
 
 
320
newExpression
 
321
        :       #(      "new" type
 
322
                        (       newArrayDeclarator (arrayInitializer)?
 
323
                        |       elist (objBlock)?
 
324
                        )
 
325
                )
 
326
 
 
327
        ;
 
328
 
 
329
newArrayDeclarator
 
330
        :       #( ARRAY_DECLARATOR (newArrayDeclarator)? (expression)? )
 
331
        ;