source: release-kits/lirk3/resources/gs3-release-maker/apache-ant-1.6.5/src/etc/testcases/taskdefs/optional/antlr/java.tree.g@ 14982

Last change on this file since 14982 was 14982, checked in by oranfry, 16 years ago

initial import of LiRK3

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