6 identifier = ('a'..'z'|'A'..'Z'|'_'|'$') ('a'..'z'|'A'..'Z'|'_'|'-'|'$'|'0'..'9')*;
7 blank = (' '|'\n'|'\t'|'\r')+;
11 compiled_from = 'Compiled from "' (Any-'"')* '"';
18 file = compiled_from? class_declaration;
20 class_declaration = modifier* class_or_interface full_class_name
21 extends_declaration? implements_declaration? throws_declaration?
22 '{' property_declaration* '}';
24 class_or_interface = 'class'|'interface';
27 = 'public'|'private'|'protected'|'static'|'final'|'native'|'synchronized'|'abstract'|'threadsafe'|'transient'|'volatile'|'strictfp';
28 type = primitive_type brackets*;
30 = 'boolean'|'byte'|'char'|'short'|'int'|'float'|'long'|'double'
35 | generic_identifier 'extends' type_bound
38 = {tail:} type_bound '&' full_class_name
39 | {head:} full_class_name;
41 generic_param = '<' generic_parameter_list '>';
42 generic_parameter_list
43 = {tail:} generic_parameter_list ',' parameter
50 = {tail:} full_class_name separator class_name
52 class_name = identifier generic_param?;
56 | {wildcard:} wildcard 'super' full_class_name ;
58 = {tail:} parameter_list ',' parameter
61 attribute_id = identifier brackets*;
62 method_id = identifier;
65 = {method:} modifier* generic_param? type method_id '(' parameter_list? ')' throws_declaration? ';'
66 | {constructor:} modifier* generic_param? full_class_name '(' parameter_list? ')' throws_declaration? ';'
67 | {attribute:} modifier* type attribute_id throws_declaration? ';'
68 | {static:} modifier* '{' '}' ';'
71 implements_declaration = 'implements' interface_list;
72 extends_declaration = 'extends' interface_list;
74 = {tail:} interface_list ',' full_class_name
75 | {head:} full_class_name;
77 throws_declaration = 'throws' exception_list?;
79 = {tail:} exception_list ',' type