%%% %% Declare Declarations %% %% @author Martin Bravenboer <martin.bravenboer@gmail.com> %%% module languages/aspectj/aspect/DeclareDeclaration[Ctx PointcutCtx] exports sorts DeclareDec context-free syntax Anno[[Ctx]]* "declare" "parents" ":" TopTypePattern Parent ";" -> DeclareDec {cons("DecParent")} Anno[[Ctx]]* "declare" "warning" ":" PointcutExpr ":" StringLiteral[[PointcutCtx]] ";" -> DeclareDec {cons("DecWarning")} Anno[[Ctx]]* "declare" "error" ":" PointcutExpr ":" StringLiteral[[PointcutCtx]] ";" -> DeclareDec {cons("DecError")} Anno[[Ctx]]* "declare" "soft" ":" Type[[PointcutCtx]] ":" PointcutExpr ";" -> DeclareDec {cons("DecSoft")} %% Strange parenthesis in ajc testsuite .... Anno[[Ctx]]* "declare" "soft" ":" "(" Type[[PointcutCtx]] ")" ":" PointcutExpr ";" -> DeclareDec {cons("DecSoft")} Anno[[Ctx]]* "declare" "precedence" ":" {TopTypePattern ","}+ ";" -> DeclareDec {cons("DecPrecedence")} Anno[[Ctx]]* "declare" AnnoDeclKind ":" ElementPattern ":" Anno[[AspectCtx]] ";" -> DeclareDec {cons("DecAnno")} sorts AnnoDeclKind context-free syntax "@type" -> AnnoDeclKind {cons("DecAnnoType")} "@constructor" -> AnnoDeclKind {cons("DecAnnoConstructor")} "@method" -> AnnoDeclKind {cons("DecAnnoMethod")} "@field" -> AnnoDeclKind {cons("DecAnnoField")} sorts Parent context-free syntax Super[[PointcutCtx]] -> Parent Interfaces[[PointcutCtx]] -> Parent %%% %% Undocumented feature (AspectJ guide) : add interfaces with extends. %%% ExtendsInterfaces[[PointcutCtx]] -> Parent {avoid}