%%% %% Section 8.1: Class Declarations %% %% @author Martin Bravenboer <martin.bravenboer@gmail.com> %%% module languages/java-15/classes/ClassDeclarations imports languages/java-15/lexical/Identifiers languages/java-15/lexical/Modifiers languages/java-15/types/ReferenceTypes languages/java-15/types/TypeVariables languages/java-15/classes/FieldDeclarations languages/java-15/classes/MethodDeclarations languages/java-15/classes/InstanceInitializers languages/java-15/classes/StaticInitializers languages/java-15/classes/ConstructorDeclarations languages/java-15/classes/EnumDeclarations languages/java-15/interfaces/InterfaceDeclarations exports sorts ClassDec ClassBody ClassDecHead context-free syntax EnumDec -> ClassDec ClassDecHead ClassBody -> ClassDec {cons("ClassDec")} "{" ClassBodyDec* "}" -> ClassBody {cons("ClassBody")} (Anno | ClassMod)* "class" Id TypeParams? Super? Interfaces? -> ClassDecHead {cons("ClassDecHead")} %% 8.1.1: Class Modifiers sorts ClassMod context-free syntax Abstract -> ClassMod Public -> ClassMod Protected -> ClassMod Private -> ClassMod Static -> ClassMod Final -> ClassMod StrictFP -> ClassMod %% 8.1.4: Superclasses and Subclasses sorts Super context-free syntax "extends" ClassType -> Super {cons("SuperDec")} %% 8.1.5: Superinterfaces sorts Interfaces context-free syntax "implements" {InterfaceType ","}+ -> Interfaces {cons("ImplementsDec")} %% 8.1.6: Class Body and Member Declarations sorts ClassBodyDec ClassMemberDec context-free syntax ClassMemberDec -> ClassBodyDec InstanceInit -> ClassBodyDec StaticInit -> ClassBodyDec ConstrDec -> ClassBodyDec context-free syntax FieldDec -> ClassMemberDec MethodDec -> ClassMemberDec ClassDec -> ClassMemberDec InterfaceDec -> ClassMemberDec ";" -> ClassMemberDec {cons("Semicolon")}