anchor.diff:  UnicodeEscapeSequence
       :   '\\' 'u' HexDigit HexDigit HexDigit HexDigit
       ;
  -    
  -
  +
  +Punctuator:
  +CurlyBracketOpen
  +| CurlyBracketClose
  +| RoundBracketOpen
  +| RoundBracketClose
  +| SquareBracketOpen
  +| SquareBracketClose
  +| Dot
  +| Semicolon
  +| Comma
  +| LessThan
  +| GreaterThan
  +| LessThanEqual
  +| GreaterThanEqual
  +| EqualEqual
  +| ExclamationEqual
  +| EqualEqualEqual
  +| ExclamationEqualEqual
  +| Plus
  +| Minus
  +| Asterisk
  +| Percent
  +| PlusPlus
  +| MinusMinus
  +| LessThanLessThan
  +| GreaterThanGreaterThan
  +| GreaterThanGreaterThanGreaterThan
  +| Ampersand
  +| Pipe
  +| Caret
  +| Exclamation
  +| Tilde
  +| AmpersandAmpersand
  +| PipePipe
  +| QuestionMark
  +| Colon
  +| Equal
  +| PlusEqual
  +| MinusEqual
  +| AsteriskEqual
  +| PercentEqual
  +| LessThanLessThanEqual
  +| GreaterThanGreaterThanEqual
  +| GreaterThanGreaterThanGreaterThanEqual
  +| AmpersandEqual
  +| PipeEqual
  +| CaretEqual
  +| Divide
  +| DivideEqual
  +;
  +fragment CurlyBracketOpen: '{';
  +fragment CurlyBracketClose: '}';
  +fragment RoundBracketOpen: '(';
  +fragment RoundBracketClose: ')';
  +fragment SquareBracketOpen: '[';
  +fragment SquareBracketClose: ']';
  +fragment Dot: '.';
  +fragment Semicolon: ';';
  +fragment Comma: ',';
  +fragment LessThan: '<';
  +fragment GreaterThan: '>';
  +fragment LessThanEqual: LessThan Equal;
  +fragment GreaterThanEqual: GreaterThan Equal;
  +fragment EqualEqual: Equal Equal;
  +fragment ExclamationEqual: Exclamation Equal;
  +fragment EqualEqualEqual: Equal Equal Equal;
  +fragment ExclamationEqualEqual: Exclamation Equal Equal;
  +fragment Plus: '+';
  +fragment Minus: '-';
  +fragment Asterisk: '*';
  +fragment Percent: '%';
  +fragment PlusPlus: '++';
  +fragment MinusMinus: Minus Minus;
  +fragment LessThanLessThan: LessThan LessThan;
  +fragment GreaterThanGreaterThan: GreaterThan GreaterThan;
  +fragment GreaterThanGreaterThanGreaterThan: GreaterThan GreaterThan GreaterThan;
  +fragment Ampersand: '&';
  +fragment Pipe: '|';
  +fragment Caret: '^';
  +fragment Exclamation: '!';
  +fragment Tilde: '~';
  +fragment AmpersandAmpersand: Ampersand Ampersand;
  +fragment PipePipe: Pipe Pipe;
  +fragment QuestionMark: '?';
  +fragment Colon: ':';
  +fragment Equal: '=';
  +fragment PlusEqual: Plus Equal;
  +fragment MinusEqual: Minus Equal;
  +fragment AsteriskEqual: Asterisk Equal;
  +fragment PercentEqual: Percent Equal;
  +fragment LessThanLessThanEqual: LessThanLessThan Equal;
  +fragment GreaterThanGreaterThanEqual: GreaterThanGreaterThan Equal;
  +fragment GreaterThanGreaterThanGreaterThanEqual: GreaterThanGreaterThanGreaterThan Equal;
  +fragment AmpersandEqual: Ampersand Equal;
  +fragment PipeEqual: Pipe Equal;
  +fragment CaretEqual: Caret Equal;
  +fragment Divide: '/';
  +fragment DivideEqual: Divide Equal;
  +
  +
  
positive.code:     |   MultiLineComment
      ;
  
  fragment
  SingleLineComment
  	:	'//' ~('\n'|'\r')* LineTerminator
  
negative.code:     : '/*' ( options {greedy=false;} : . )* '*/'
      ;
      
  StringLiteral
      :  DoubleQuoteString
      | SingleQuoteString
      ;
  
  fragment
  DoubleQuoteString
  	: '"' ( EscapeSequence | ~('\\'|'"') )* '"'
  	;
  fragment
  SingleQuoteString
  	:	'\'' ( EscapeSequence | ~('\\'|'\'') )* '\''
  	;
  
  RegularExpressionLiteral
      : '/' ~('/'|'*'|LineTerminator) ~('/'|LineTerminator)* '/' Identifier*
      ;
  
  WhiteSpace  :   
  	( ' '
          | '\t'
          )
          ;
  LineTerminator
  	: ('\n'
  	| '\r')
  	;
  
  ReservedKeywords
  