%%% %% 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")}