anchor.diff:  // ones that ANTLR uses internally (0 to 2)
   protected
   VOCAB
  +options {
  +    paraphrase="a character";
  +}
       :   '\3'..'\377'
       ;
   
  
positive.code: // TODO:  Borneo-style ops.
  
  // OPERATORS
  QUESTION                :   '?'             ;
  LPAREN                  :   '('             {++parenLevel;};
  RPAREN                  :   ')'             {--parenLevel;};
  LBRACK                  :   '['             {++parenLevel;};
  RBRACK                  :   ']'             {--parenLevel;};
  LCURLY                  :   '{'             {pushParenLevel();};
  RCURLY                  :   '}'             {popParenLevel(); if(stringCtorState!=0) restartStringCtor(true);};
  COLON                   :   ':'             ;
  COMMA                   :   ','             ;
  DOT                     :   '.'             ;
  ASSIGN                  :   '='             ;
  COMPARE_TO              :   "<=>"           ;
  EQUAL                   :   "=="            ;
  LNOT                    :   '!'             ;
  BNOT                    :   '~'             ;
  NOT_EQUAL               :   "!="            ;
  protected  //switched from combined rule
  DIV                     :   '/'             ;
  protected  //switched from combined rule
  DIV_ASSIGN              :   "/="            ;
  PLUS                    :   '+'             ;
  PLUS_ASSIGN             :   "+="            ;
  INC                     :   "++"            ;
  MINUS                   :   '-'             ;
  MINUS_ASSIGN            :   "-="            ;
  DEC                     :   "--"            ;
  STAR                    :   '*'             ;
  STAR_ASSIGN             :   "*="            ;
  MOD                     :   '%'             ;
  MOD_ASSIGN              :   "%="            ;
  SR                      :   ">>"            ;
  SR_ASSIGN               :   ">>="           ;
  BSR                     :   ">>>"           ;
  BSR_ASSIGN              :   ">>>="          ;
  GE                      :   ">="            ;
  GT                      :   ">"             ;
  SL                      :   "<<"            ;
  SL_ASSIGN               :   "<<="           ;
  LE                      :   "<="            ;
  LT                      :   '<'             ;
  BXOR                    :   '^'             ;
  BXOR_ASSIGN             :   "^="            ;
  BOR                     :   '|'             ;
  BOR_ASSIGN              :   "|="            ;
  LOR                     :   "||"            ;
  BAND                    :   '&'             ;
  BAND_ASSIGN             :   "&="            ;
  LAND                    :   "&&"            ;
  SEMI                    :   ';'             ;
  DOLLAR                  :   '$'             ;
  RANGE_INCLUSIVE         :   ".."            ;
  RANGE_EXCLUSIVE         :   "..<"           ;
  TRIPLE_DOT              :   "..."           ;
  SPREAD_DOT              :   "*."            ;
  OPTIONAL_DOT            :   "?."            ;
  MEMBER_POINTER          :   ".&"            ;
  REGEX_FIND              :   "=~"            ;
  REGEX_MATCH             :   "==~"           ;
  STAR_STAR               :   "**"            ;
  STAR_STAR_ASSIGN        :   "**="           ;
  CLOSURE_OP              :   "->"            ;
  
  // Whitespace -- ignored
  WS
      :
          (
              options { greedy=true; }:
  
negative.code: 
  protected
  LETTER
  options {
      paraphrase="a letter";
  }
      :   'a'..'z'|'A'..'Z'|'_'
      // TODO:  Recognize all the Java identifier starts here (except '$').
      ;
  
  protected
  DIGIT
  options {
      paraphrase="a digit";
  }
      :   '0'..'9'
      // TODO:  Recognize all the Java identifier parts here (except '$').
      ;
  
  // a numeric literal
  NUM_INT
  options {
      paraphrase="a numeric literal";
  }
      {boolean isDecimal=false; Token t=null;}
      :
  /*OBS*
  