%%% %% Section 8.4: Method Declarations %% %% @author Martin Bravenboer <martin.bravenboer@gmail.com> %%% module languages/java-15/classes/MethodDeclarations imports languages/java-15/lexical/Identifiers languages/java-15/lexical/Modifiers languages/java-15/types/Main languages/java-15/classes/FieldDeclarations languages/java-15/interfaces/Annotations languages/java-15/statements/Blocks exports sorts MethodDec MethodDecHead ResultType context-free syntax MethodDecHead MethodBody -> MethodDec {cons("MethodDec")} (Anno | MethodMod)* TypeParams? ResultType Id "(" {FormalParam ","}* ")" Throws? -> MethodDecHead {cons("MethodDecHead")} (Anno | MethodMod)* TypeParams? ResultType Id "(" {FormalParam ","}* ")" Dim+ Throws? -> MethodDecHead {cons("DeprMethodDecHead")} Type -> ResultType "void" -> ResultType {cons("Void")} sorts FormalParam context-free syntax (Anno | VarMod)* Type VarDecId -> FormalParam {cons("Param")} (Anno | VarMod)* Type "..." VarDecId -> FormalParam {cons("VarArityParam")} sorts VarMod context-free syntax Final -> VarMod sorts MethodMod context-free syntax Public -> MethodMod Protected -> MethodMod Private -> MethodMod Abstract -> MethodMod Static -> MethodMod Final -> MethodMod Synchronized -> MethodMod Native -> MethodMod StrictFP -> MethodMod %%% %% Section 8.4.6: Method Throws %%% sorts Throws ExceptionType context-free syntax "throws" {ExceptionType ","}+ -> Throws {cons("ThrowsDec")} ClassType -> ExceptionType %% TypeVar -> ExceptionType %%% %% Section 8.4.7: Method Body %%% sorts MethodBody context-free syntax Block -> MethodBody ";" -> MethodBody {cons("NoMethodBody")}