module languages/java/syntax/Interfaces imports languages/java/syntax/Modifiers imports languages/java/syntax/MethodDecl exports sorts InterfaceDeclaration ExtendsInterfaces InterfaceBody InterfaceMemberDeclaration ConstantDeclaration AbstractMethodDeclaration context-free syntax Modifier* "interface" Identifier ExtendsInterfaces? InterfaceBody -> InterfaceDeclaration {cons("interface")} "extends" {InterfaceType ","}+ -> ExtendsInterfaces {cons("extends-comma")} "{" InterfaceMemberDeclaration* "}" -> InterfaceBody {cons("InterfaceMemberDeclaration-s")} ConstantDeclaration -> InterfaceMemberDeclaration {cons("ConstantDeclaration")} AbstractMethodDeclaration -> InterfaceMemberDeclaration {cons("AbstractMethodDeclaration")} InterfaceDeclaration -> InterfaceMemberDeclaration {cons("InnerInterfaceDeclaration")} ClassDeclaration -> InterfaceMemberDeclaration {cons("InnerClassDeclaration")} FieldDeclaration -> ConstantDeclaration {cons("FieldDeclaration")} MethodHeader ";" -> AbstractMethodDeclaration {cons("semicolon4")}