1
// This file is part of PyANTLR. See LICENSE.txt for license
2
// details..........Copyright (C) Wolfgang Haefelinger, 2004.
6
/* Java 1.3 AST Recognizer Grammar
8
* Author: (see java.g preamble)
10
* This grammar is in the PUBLIC DOMAIN
18
class java_w extends TreeParser;
25
: (packageDefinition)?
31
: #( PACKAGE_DEF identifier )
35
: #( IMPORT identifierStar )
39
: #(CLASS_DEF modifiers IDENT extendsClause implementsClause objBlock )
40
| #(INTERFACE_DEF modifiers IDENT extendsClause interfaceBlock )
44
: #(TYPE typeSpecArray)
48
: #( ARRAY_DECLARATOR typeSpecArray )
69
: #( MODIFIERS (modifier)* )
89
: #(EXTENDS_CLAUSE (identifier)* )
93
: #(IMPLEMENTS_CLAUSE (identifier)* )
112
| #(STATIC_INIT slist)
113
| #(INSTANCE_INIT slist)
119
: #(CTOR_DEF modifiers methodHead (slist)?)
123
: #(METHOD_DEF modifiers typeSpec methodHead)
127
: #(METHOD_DEF modifiers typeSpec methodHead (slist)?)
131
: #(VARIABLE_DEF modifiers typeSpec variableDeclarator varInitializer)
135
: #(PARAMETER_DEF modifiers typeSpec IDENT )
139
: #(INSTANCE_INIT slist)
144
| LBRACK variableDeclarator
148
: #(ASSIGN initializer)
158
: #(ARRAY_INIT (initializer)*)
162
: IDENT #( PARAMETERS (parameterDef)* ) (throwsClause)?
166
: #( "throws" (identifier)* )
171
| #( DOT identifier IDENT )
176
| #( DOT identifier (STAR|IDENT) )
186
| #(LABELED_STAT IDENT stat)
187
| #("if" expression stat (stat)? )
189
#(FOR_INIT ((variableDef)+ | elist)?)
190
#(FOR_CONDITION (expression)?)
191
#(FOR_ITERATOR (elist)?)
194
| #("while" expression stat)
195
| #("do" stat expression)
196
| #("break" (IDENT)? )
197
| #("continue" (IDENT)? )
198
| #("return" (expression)? )
199
| #("switch" expression (caseGroup)*)
200
| #("throw" expression)
201
| #("synchronized" expression stat)
203
| slist // nested SLIST
204
// uncomment to make assert JDK 1.4 stuff work
205
// | #("assert" expression (expression)?)
210
: #(CASE_GROUP (#("case" expression) | "default")+ slist)
214
: #( "try" slist (handler)* (#("finally" slist))? )
218
: #( "catch" parameterDef slist )
222
: #( ELIST (expression)* )
229
expr: #(QUESTION expr expr expr) // trinary operator
230
| #(ASSIGN expr expr) // binary operators...
231
| #(PLUS_ASSIGN expr expr)
232
| #(MINUS_ASSIGN expr expr)
233
| #(STAR_ASSIGN expr expr)
234
| #(DIV_ASSIGN expr expr)
235
| #(MOD_ASSIGN expr expr)
236
| #(SR_ASSIGN expr expr)
237
| #(BSR_ASSIGN expr expr)
238
| #(SL_ASSIGN expr expr)
239
| #(BAND_ASSIGN expr expr)
240
| #(BXOR_ASSIGN expr expr)
241
| #(BOR_ASSIGN expr expr)
247
| #(NOT_EQUAL expr expr)
267
| #("instanceof" expr expr)
268
| #(UNARY_MINUS expr)
281
| #( "new" IDENT elist )
284
| #(ARRAY_DECLARATOR typeSpecArray)
285
| builtInType ("class")?
289
| #(METHOD_CALL primaryExpression elist)
291
| #(TYPECAST typeSpec expr)
299
| typeSpec // type name used with instanceof
303
: #( CTOR_CALL elist )
306
| primaryExpression elist
312
: #(INDEX_OP expr expression)
326
( newArrayDeclarator (arrayInitializer)?
334
: #( ARRAY_DECLARATOR (newArrayDeclarator)? (expression)? )