5
/** Java 1.3 AST Recognizer Grammar
7
* Author: (see java.g preamble)
9
* Version tracking now done with following ID:
11
* $Id: java.tree.g 255671 2003-10-02 13:45:46Z $
13
* This grammar is in the PUBLIC DOMAIN
16
class JavaTreeParser extends TreeParser;
23
: (packageDefinition)?
29
: #( PACKAGE_DEF identifier )
33
: #( IMPORT identifierStar )
37
: #(CLASS_DEF modifiers IDENT extendsClause implementsClause objBlock )
38
| #(INTERFACE_DEF modifiers IDENT extendsClause interfaceBlock )
42
: #(TYPE typeSpecArray)
46
: #( ARRAY_DECLARATOR typeSpecArray )
67
: #( MODIFIERS (modifier)* )
87
: #(EXTENDS_CLAUSE (identifier)* )
91
: #(IMPLEMENTS_CLAUSE (identifier)* )
108
| #(STATIC_INIT slist)
109
| #(INSTANCE_INIT slist)
115
: #(CTOR_DEF modifiers methodHead (slist)?)
119
: #(METHOD_DEF modifiers typeSpec methodHead)
123
: #(METHOD_DEF modifiers typeSpec methodHead (slist)?)
127
: #(VARIABLE_DEF modifiers typeSpec variableDeclarator varInitializer)
131
: #(PARAMETER_DEF modifiers typeSpec IDENT )
135
: #(INSTANCE_INIT slist)
140
| LBRACK variableDeclarator
144
: #(ASSIGN initializer)
154
: #(ARRAY_INIT (initializer)*)
158
: IDENT #( PARAMETERS (parameterDef)* ) (throwsClause)?
162
: #( "throws" (identifier)* )
167
| #( DOT identifier IDENT )
172
| #( DOT identifier (STAR|IDENT) )
182
| #(LABELED_STAT IDENT stat)
183
| #("if" expression stat (stat)? )
185
#(FOR_INIT (variableDef | elist)?)
186
#(FOR_CONDITION (expression)?)
187
#(FOR_ITERATOR (elist)?)
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)
199
| slist // nested SLIST
200
// uncomment to make assert JDK 1.4 stuff work
201
// | #("assert" expression (expression)?)
206
: #(CASE_GROUP (#("case" expression) | "default")+ slist)
210
: #( "try" slist (handler)* (#("finally" slist))? )
214
: #( "catch" parameterDef slist )
218
: #( ELIST (expression)* )
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)
243
| #(NOT_EQUAL expr expr)
263
| #("instanceof" expr expr)
264
| #(UNARY_MINUS expr)
277
| #( "new" IDENT elist )
280
| #(ARRAY_DECLARATOR typeSpecArray)
281
| builtInType ("class")?
285
| #(METHOD_CALL primaryExpression elist)
287
| #(TYPECAST typeSpec expr)
295
| typeSpec // type name used with instanceof
299
: #( CTOR_CALL elist )
302
| primaryExpression elist
308
: #(INDEX_OP expr expression)
322
( newArrayDeclarator (arrayInitializer)?
330
: #( ARRAY_DECLARATOR (newArrayDeclarator)? (expression)? )