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' full_class_name
38 generic_param = '<' generic_parameter_list '>';
39 generic_parameter_list
40 = {tail:} generic_parameter_list ',' parameter
47 = {tail:} full_class_name separator class_name
49 class_name = identifier generic_param?;
53 | {wildcard:} wildcard 'super' full_class_name ;
55 = {tail:} parameter_list ',' parameter
58 attribute_id = identifier brackets*;
59 method_id = identifier;
62 = {method:} modifier* generic_param? type method_id '(' parameter_list? ')' throws_declaration? ';'
63 | {constructor:} modifier* full_class_name '(' parameter_list? ')' throws_declaration? ';'
64 | {attribute:} modifier* type attribute_id throws_declaration? ';'
65 | {static:} modifier* '{' '}' ';'
68 implements_declaration = 'implements' interface_list;
69 extends_declaration = 'extends' interface_list;
71 = {tail:} interface_list ',' full_class_name
72 | {head:} full_class_name;
74 throws_declaration = 'throws' exception_list?;
76 = {tail:} exception_list ',' type