anchor.diff:     ;
   
   
  +
  +OPTIONS
  +   : 'options' WS_LOOP '{'
  +   ;
  +
  +
  +TOKENS
  +   : 'tokens' WS_LOOP '{'
  +   ;
  +
  +
  +fragment SRC
  +   : 'src' ' ' ACTION_STRING_LITERAL ' ' INT
  +   ;
  +
  +fragment WS_LOOP
  +   : (WS | SL_COMMENT | ML_COMMENT)*
  +   ;
  +
  +
  +DOC_COMMENT
  +   : 'DOC_COMMENT'
  +   ;
  +
  +
  +PARSER
  +   : 'PARSER'
  +   ;
  +
  +
  +LEXER
  +   : 'LEXER'
  +   ;
  +
  +
  +RULE
  +   : 'RULE'
  +   ;
  +
  +
  +BLOCK
  +   : 'BLOCK'
  +   ;
  +
  +
  +OPTIONAL
  +   : 'OPTIONAL'
  +   ;
  +
  +
  +CLOSURE
  +   : 'CLOSURE'
  +   ;
  +
  +
  +POSITIVE_CLOSURE
  +   : 'POSITIVE_CLOSURE'
  +   ;
  +
  +
  +SYNPRED
  +   : 'SYNPRED'
  +   ;
  +
  +
  +RANGE
  +   : 'RANGE'
  +   ;
  +
  +
  +CHAR_RANGE
  +   : 'CHAR_RANGE'
  +   ;
  +
  +
  +EPSILON
  +   : 'EPSILON'
  +   ;
  +
  +
  +ALT
  +   : 'ALT'
  +   ;
  +
  +
  +EOR
  +   : 'EOR'
  +   ;
  +
  +
  +EOB
  +   : 'EOB'
  +   ;
  +
  +
  +EOA
  +   : 'EOA'
  +   ;
  +
  +// end of alt
  +
  +ID
  +   : 'ID'
  +   ;
  +
  +
  +ARG
  +   : 'ARG'
  +   ;
  +
  +
  +ARGLIST
  +   : 'ARGLIST'
  +   ;
  +
  +
  +RET
  +   : 'RET'
  +   ;
  +
  +
  +LEXER_GRAMMAR
  +   : 'LEXER_GRAMMAR'
  +   ;
  +
  +
  +PARSER_GRAMMAR
  +   : 'PARSER_GRAMMAR'
  +   ;
  +
  +
  +TREE_GRAMMAR
  +   : 'TREE_GRAMMAR'
  +   ;
  +
  +
  +COMBINED_GRAMMAR
  +   : 'COMBINED_GRAMMAR'
  +   ;
  +
  +
  +INITACTION
  +   : 'INITACTION'
  +   ;
  +
  +
  +LABEL
  +   : 'LABEL'
  +   ;
  +
  +
  +TEMPLATE
  +   : 'TEMPLATE'
  +   ;
  +
  +
  +SCOPE
  +   : 'scope'
  +   ;
  +
  +SEMPRED
  +   : 'SEMPRED'
  +   ;
  +
  +
  +GATED_SEMPRED
  +   : 'GATED_SEMPRED'
  +   ;
  +
  +
  +SYN_SEMPRED
  +   : 'SYN_SEMPRED'
  +   ;
  +
  +
  +BACKTRACK_SEMPRED
  +   : 'BACKTRACK_SEMPRED'
  +   ;
  +
  +
  +FRAGMENT
  +   : 'fragment'
  +   ;
  +
  +
  +TREE_BEGIN
  +   : '^('
  +   ;
  +
  +
  +ROOT
  +   : '^'
  +   ;
  +
  +
  +BANG
  +   : '!'
  +   ;
  +
  +
  +RANGE2
  +   : '..'
  +   ;
  +
  +
  +REWRITE
  +   : '->'
  +   ;
  +
  +
  +SL_COMMENT
  +   : '//' ~[\r\n]* -> skip
  +   ;
  +
  +
  +ML_COMMENT
  +   : '/*' .*? '*/' -> skip
  +   ;
  +
  +WS
  +   : (' ' | '\t' | '\r'? '\n') + -> skip
  +   ;
  +
   TOKEN_REF
      : 'A' .. 'Z' ('a' .. 'z' | 'A' .. 'Z' | '_' | '0' .. '9')*
      ;
   
  -
   RULE_REF
      : 'a' .. 'z' ('a' .. 'z' | 'A' .. 'Z' | '_' | '0' .. '9')*
      ;
  -
  -
  -OPTIONS
  -   : 'options' WS_LOOP '{'
  -   ;
  -
  -
  -TOKENS
  -   : 'tokens' WS_LOOP '{'
  -   ;
  -
  -
  -fragment SRC
  -   : 'src' ' ' ACTION_STRING_LITERAL ' ' INT
  -   ;
  -
  -fragment WS_LOOP
  -   : (WS | SL_COMMENT | ML_COMMENT)*
  -   ;
  -
  -
  -DOC_COMMENT
  -   : 'DOC_COMMENT'
  -   ;
  -
  -
  -PARSER
  -   : 'PARSER'
  -   ;
  -
  -
  -LEXER
  -   : 'LEXER'
  -   ;
  -
  -
  -RULE
  -   : 'RULE'
  -   ;
  -
  -
  -BLOCK
  -   : 'BLOCK'
  -   ;
  -
  -
  -OPTIONAL
  -   : 'OPTIONAL'
  -   ;
  -
  -
  -CLOSURE
  -   : 'CLOSURE'
  -   ;
  -
  -
  -POSITIVE_CLOSURE
  -   : 'POSITIVE_CLOSURE'
  -   ;
  -
  -
  -SYNPRED
  -   : 'SYNPRED'
  -   ;
  -
  -
  -RANGE
  -   : 'RANGE'
  -   ;
  -
  -
  -CHAR_RANGE
  -   : 'CHAR_RANGE'
  -   ;
  -
  -
  -EPSILON
  -   : 'EPSILON'
  -   ;
  -
  -
  -ALT
  -   : 'ALT'
  -   ;
  -
  -
  -EOR
  -   : 'EOR'
  -   ;
  -
  -
  -EOB
  -   : 'EOB'
  -   ;
  -
  -
  -EOA
  -   : 'EOA'
  -   ;
  -
  -// end of alt
  -
  -ID
  -   : 'ID'
  -   ;
  -
  -
  -ARG
  -   : 'ARG'
  -   ;
  -
  -
  -ARGLIST
  -   : 'ARGLIST'
  -   ;
  -
  -
  -RET
  -   : 'RET'
  -   ;
  -
  -
  -LEXER_GRAMMAR
  -   : 'LEXER_GRAMMAR'
  -   ;
  -
  -
  -PARSER_GRAMMAR
  -   : 'PARSER_GRAMMAR'
  -   ;
  -
  -
  -TREE_GRAMMAR
  -   : 'TREE_GRAMMAR'
  -   ;
  -
  -
  -COMBINED_GRAMMAR
  -   : 'COMBINED_GRAMMAR'
  -   ;
  -
  -
  -INITACTION
  -   : 'INITACTION'
  -   ;
  -
  -
  -LABEL
  -   : 'LABEL'
  -   ;
  -
  -
  -TEMPLATE
  -   : 'TEMPLATE'
  -   ;
  -
  -
  -SCOPE
  -   : 'scope'
  -   ;
  -
  -
  -SEMPRED
  -   : 'SEMPRED'
  -   ;
  -
  -
  -GATED_SEMPRED
  -   : 'GATED_SEMPRED'
  -   ;
  -
  -
  -SYN_SEMPRED
  -   : 'SYN_SEMPRED'
  -   ;
  -
  -
  -BACKTRACK_SEMPRED
  -   : 'BACKTRACK_SEMPRED'
  -   ;
  -
  -
  -FRAGMENT
  -   : 'fragment'
  -   ;
  -
  -
  -TREE_BEGIN
  -   : '^('
  -   ;
  -
  -
  -ROOT
  -   : '^'
  -   ;
  -
  -
  -BANG
  -   : '!'
  -   ;
  -
  -
  -RANGE2
  -   : '..'
  -   ;
  -
  -
  -REWRITE
  -   : '->'
  -   ;
  -
  -
  -SL_COMMENT
  -   : '//' ~[\r\n]* -> skip
  -   ;
  -
  -
  -ML_COMMENT
  -   : '/*' .*? '*/' -> skip
  -   ;
  -
  -WS
  -   : (' ' | '\t' | '\r'? '\n') + -> skip
  -   ;
  -
  
positive.code:    ;
  
  ebnf
     : block ('?' | '*' | '+' | '=>')
     ;
  
  range
  
negative.code:    ;
  
  elementNoOptionSpec
     : id ('=' | '+=') atom (ebnfSuffix?)
     | id ('=' | '+=') block (ebnfSuffix?)
     | atom (ebnfSuffix?)
     | ebnf
     | ACTION
     | SEMPRED ('=>')
  