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 68 69
|
%%%
%% Section 8.1: Class Declarations
%%
%% @author Martin Bravenboer <martin@cs.uu.nl>
%%%
module languages/java-14/classes/ClassDeclarations
imports
languages/java-14/lexical/Identifiers
languages/java-14/lexical/Modifiers
languages/java-14/types/ReferenceTypes
languages/java-14/classes/FieldDeclarations
languages/java-14/classes/MethodDeclarations
languages/java-14/classes/InstanceInitializers
languages/java-14/classes/StaticInitializers
languages/java-14/classes/ConstructorDeclarations
languages/java-14/interfaces/InterfaceDeclarations
exports
sorts
ClassDec
ClassBody
ClassDecHead
context-free syntax
ClassDecHead ClassBody -> ClassDec {cons("ClassDec")}
"{" ClassBodyDec* "}" -> ClassBody {cons("ClassBody")}
ClassMod* "class" Id 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")}
|