%%% %% Section 8.8: Constructor Declarations %% %% @author Martin Bravenboer <martin.bravenboer@gmail.com> %%% module languages/java-15/classes/ConstructorDeclarations imports languages/java-15/lexical/Identifiers languages/java-15/lexical/Modifiers languages/java-15/interfaces/Annotations languages/java-15/statements/Main languages/java-15/expressions/Main exports sorts ConstrDec ConstrBody ConstrHead ConstrInv context-free syntax ConstrHead ConstrBody -> ConstrDec {cons("ConstrDec")} (Anno | ConstrMod)* TypeParams? Id "(" {FormalParam ","}* ")" Throws? -> ConstrHead {cons("ConstrDecHead")} "{" ConstrInv? BlockStm* "}" -> ConstrBody {cons("ConstrBody")} TypeArgs? "this" "(" {Expr ","}* ")" ";" -> ConstrInv {cons("AltConstrInv")} TypeArgs? "super" "(" {Expr ","}* ")" ";" -> ConstrInv {cons("SuperConstrInv")} Expr "." TypeArgs? "super" "(" {Expr ","}* ")" ";" -> ConstrInv {cons("QSuperConstrInv")} sorts ConstrMod context-free syntax Public -> ConstrMod Protected -> ConstrMod Private -> ConstrMod