%%%
 %% Annotation Patterns
 %%
 %% @author  Martin Bravenboer <martin.bravenboer@gmail.com>
 %%%
module languages/aspectj/pattern/Annotation[Ctx]
exports
  sorts
    AnnoPattern
    SimpleAnnoPattern

  context-free syntax
    "@" "(" TypePattern ")" -> SimpleAnnoPattern {cons("SimpleAnnoPattern")}
    "@" TypeName[[Ctx]]     -> SimpleAnnoPattern {cons("SimpleAnnoPatternExact")}
    "!" SimpleAnnoPattern   -> NotSimpleAnnoPattern {cons("Not")}

    (SimpleAnnoPattern | NotSimpleAnnoPattern)* -> AnnoPattern {cons("AnnoPattern")}
    (SimpleAnnoPattern | NotSimpleAnnoPattern)+ -> AnnoPatternPlus {cons("AnnoPattern")}