%%%
%% 3.3.3: Advice Declarations
%%
%% @author Martin Bravenboer <martin.bravenboer@gmail.com>
%%%
module languages/aspectj/aspect/AdviceDeclaration[Ctx]
exports
sorts AdviceDec AdviceMod
context-free syntax
AdviceMod* AdviceSpec Throws[[Ctx]]? ":" PointcutExpr MethodBody[[Ctx]] -> AdviceDec {cons("AdviceDec")}
StrictFP[[Ctx]] -> AdviceMod
Anno[[Ctx]] -> AdviceMod
sorts AdviceSpec
context-free syntax
"before" "(" {FormalParam[[Ctx]] ","}* ")" -> AdviceSpec {cons("Before")}
"after" "(" {FormalParam[[Ctx]] ","}* ")" ExitStatus? -> AdviceSpec {cons("After")}
ResultType[[Ctx]] "around" "(" {FormalParam[[Ctx]] ","}* ")" -> AdviceSpec {cons("Around")}
"returning" -> ExitStatus {cons("Returning")}
"returning" "(" ")" -> ExitStatus {cons("Returning")}
"returning" "(" FormalParam[[Ctx]] ")" -> ExitStatus {cons("Returning")}
"throwing" -> ExitStatus {cons("Throwing")}
"throwing" "(" ")" -> ExitStatus {cons("Throwing")}
"throwing" "(" FormalParam[[Ctx]] ")" -> ExitStatus {cons("Throwing")}