%%%
 %% Keywords in the official AspectJ Compiler.
 %%
 %% @author  Martin Bravenboer <martin.bravenboer@gmail.com>
 %%%
module languages/aspectj/ajc/Keyword[JavaCtx AspectCtx PointcutCtx PatternCtx]
exports
  context-free syntax
    PrimPointcutName -> PointcutName {reject}

  context-free syntax
    PseudoKeyword -> TypeName[[JavaCtx]]            {reject}
    PseudoKeyword -> PackageOrTypeName[[JavaCtx]]   {reject}

    PseudoKeyword -> TypeName[[AspectCtx]]          {reject}
    PseudoKeyword -> PackageOrTypeName[[AspectCtx]] {reject}

  sorts PseudoKeyword
  lexical syntax
      "aspect"
    | "pointcut"
    | "privileged"
    | "before"
    | "after"
    | "around"
    | "declare" -> PseudoKeyword