%%%
%% Section 9.1: Interface Declarations
%%
%% @author Martin Bravenboer <martin.bravenboer@gmail.com>
%%%
module languages/java-15/interfaces/InterfaceDeclarations
imports
languages/java-15/lexical/Identifiers
languages/java-15/lexical/Modifiers
languages/java-15/names/Main
languages/java-15/types/Main
languages/java-15/classes/ClassDeclarations
languages/java-15/classes/MethodDeclarations
languages/java-15/interfaces/ConstantDeclarations
languages/java-15/interfaces/AbstractMethodDeclarations
languages/java-15/interfaces/AnnotationTypes
languages/java-15/interfaces/Annotations
exports
sorts
InterfaceDec
InterfaceDecHead
ExtendsInterfaces
InterfaceMemberDec
InterfaceMod
context-free syntax
AnnoDec -> InterfaceDec
InterfaceDecHead "{" InterfaceMemberDec* "}" -> InterfaceDec {cons("InterfaceDec")}
(Anno | InterfaceMod)* "interface" Id TypeParams? ExtendsInterfaces? -> InterfaceDecHead {cons("InterfaceDecHead")}
"extends" {InterfaceType ","}+ -> ExtendsInterfaces {cons("ExtendsInterfaces")}
context-free syntax
ConstantDec -> InterfaceMemberDec
AbstractMethodDec -> InterfaceMemberDec
ClassDec -> InterfaceMemberDec
InterfaceDec -> InterfaceMemberDec
";" -> InterfaceMemberDec {cons("Semicolon")}
context-free syntax
Public -> InterfaceMod
Protected -> InterfaceMod
Private -> InterfaceMod
Abstract -> InterfaceMod
Static -> InterfaceMod
StrictFP -> InterfaceMod