%%%
%% Section 8.9: Enums
%%
%% @author Martin Bravenboer <martin.bravenboer@gmail.com>
%%%
module languages/java-15/classes/EnumDeclarations
imports
languages/java-15/lexical/Identifiers
languages/java-15/classes/ClassDeclarations
exports
sorts
EnumDec
EnumDecHead
EnumBody
EnumConst
EnumConstArgs
EnumBodyDecs
context-free syntax
EnumDecHead EnumBody -> EnumDec {cons("EnumDec")}
(Anno | ClassMod)* "enum" Id Interfaces? -> EnumDecHead {cons("EnumDecHead")}
"{" {EnumConst ","}* EnumBodyDecs? "}" -> EnumBody {cons("EnumBody")}
"{" {EnumConst ","}* "," EnumBodyDecs? "}" -> EnumBody {cons("EnumBody")}
Id EnumConstArgs? ClassBody? -> EnumConst {cons("EnumConst")}
"(" {Expr ","}* ")" -> EnumConstArgs {bracket}
";" ClassBodyDec* -> EnumBodyDecs {cons("EnumBodyDecs")}