ClassDeclarations.sdf3 pdmosses/java-front/lang.java/syntax/java/classes/ClassDeclarations.sdf3 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 module java/classes/ClassDeclarations // 8.1. Class Declarations imports java/lexical/Identifiers java/lexical/Modifiers java/lexical/SemiColon java/types/ReferenceTypes java/classes/FieldDeclarations java/classes/MethodDeclarations java/classes/InstanceInitializers java/classes/StaticInitializers java/classes/EnumDeclarations java/classes/ConstructorDeclarations java/interfaces/Annotations java/interfaces/InterfaceDeclarations java/types/TypeVariable context-free sorts ClassDeclaration NormalClassDeclaration ClassModifier TypeParameters SuperClass SuperInterfaces ClassBodyDeclaration ClassMemberDeclaration context-free syntax ClassDeclaration = NormalClassDeclaration ClassDeclaration = EnumDeclaration NormalClassDeclaration.ClassDeclaration = < <{ClassModifier " "}*> class <Id><TypeParameters?> <SuperClass?> <SuperInterfaces?> { <{ClassBodyDeclaration "\n"}*> }> ClassModifier = Annotation ClassModifier = Public ClassModifier = Protected ClassModifier = Private ClassModifier = Abstract ClassModifier = Static ClassModifier = Final ClassModifier = Strictfp TypeParameters.TypeParameters = [<[{TypeParameter ","}+]>] // TypeParameter is already defined in 4.4 / java/types/TypeVariable SuperClass.SuperClass = <extends <ClassType>> SuperInterfaces.SuperInterface = <implements <{ClassType ", "}+>> ClassBodyDeclaration = ClassMemberDeclaration ClassBodyDeclaration = InstanceInitializer ClassBodyDeclaration = StaticInitializer ClassBodyDeclaration = ConstructorDeclaration ClassMemberDeclaration = FieldDeclaration ClassMemberDeclaration = MethodDeclaration ClassMemberDeclaration = ClassDeclaration ClassMemberDeclaration = InterfaceDeclaration ClassMemberDeclaration = SemiColon ×