%%%
%% Keywords in Aspect the AspectBench Compiler.
%%
%% @author Martin Bravenboer <martin.bravenboer@gmail.com>
%%%
module languages/aspectj/abc/Keyword[JavaCtx AspectCtx PointcutCtx PatternCtx]
imports
languages/java/JavaMix[PlainJavaTheCtx]
exports
%%%
%% Keywords in Java Context
%%%
lexical syntax
"privileged"
| "aspect"
| "pointcut"
-> Keyword[[JavaCtx]]
%%%
%% Keywords in Aspect Context
%%%
lexical syntax
"after"
| "around"
| "before"
| "declare"
| "issingleton"
| "percflow"
| "percflowbelow"
| "pertarget"
| "perthis"
| "pointcut"
| "proceed"
-> Keyword[[AspectCtx]]
Keyword[[JavaCtx]] -> Keyword[[AspectCtx]]
%%%
%% Keywords in Pointcut Context
%%%
lexical syntax
PrimPointcutName -> Keyword[[PointcutCtx]]
Keyword[[JavaCtx]] -> Keyword[[PointcutCtx]]
"error"
| "parents"
| "precedence"
| "returning"
| "soft"
| "throwing"
| "warning" -> Keyword[[PointcutCtx]]
%%%
%% Keywords in Pattern Context
%%%
lexical syntax
Keyword[[PointcutCtx]] -> Keyword[[PatternCtx]]
Keyword[[PatternCtx]] -> IdPattern {reject}
context-free syntax
"proceed" -> MethodSpec[[AspectCtx]] {cons("Proceed")}