anchor.diff:     ;
   
   terminal_
  -   : (CHAR_LITERAL | TOKEN_REF (ARG_ACTION) | STRING_LITERAL | '.') ('^' | '!')?
  +   : (CHAR_LITERAL | TOKEN_REF (ARG_ACTION?) | STRING_LITERAL | '.') ('^' | '!')?
      ;
   
   notTerminal
  
positive.code:    ;
  
  elementNoOptionSpec
     : id ('=' | '+=') atom (ebnfSuffix)
     | id ('=' | '+=') block (ebnfSuffix)
     | atom (ebnfSuffix)
     | ebnf
     | ACTION
     | SEMPRED ('=>')
  
negative.code:    ;
  
  rule_
     : DOC_COMMENT? (('protected' | 'public' | 'private' | 'fragment'))? id '!'? (ARG_ACTION)? ('returns' ARG_ACTION)? throwsSpec? optionsSpec? ruleScopeSpec? ruleAction* ':' altList? ';' exceptionGroup?
     ;
  
  ruleAction
  