Note that extra keywords in ASPECT mode, such as before, are not keywords in the POINTCUT mode, and similarly the extra keywords in POINTCUT mode are not keywords in ASPECT mode.
Identifier = [:jletter:][:jletterdigit:]*
Identifier patterns are recognized as:
IdentifierPattern = ( "*" | [:jletter:] ) ( "*" | [:jletterdigit:] )*
Since identifiers and identifier patterns are used in pointcuts to specify names that may occur anywhere, including Java code that has been defined in a library, it is possible that a pattern might want to refer to something with the same name as one of the extra keywords. This is handled later by the grammar, where the extra keywords are explicitly allowed as one alternative of the rule for simple_name_pattern, see Section 3.5.1.