anchor.diff:      | '0' ('b' | 'B') ('0' | '1')+
       ;
   
  +// Python floating point literals, conformant to 3.4.2 spec
  +// The integer and exponent parts are always interpreted using radix 10
   FLOAT
  -    :   ('0'..'9')+ '.' ('0'..'9')* EXPONENT?
  -    |   '.' ('0'..'9')+ EXPONENT?
  -    |   ('0'..'9')+ EXPONENT
  +    : FLOAT_NO_EXP
  +    | FLOAT_EXP
  +    ;
  +
  +// moved this rule so we could differentiate between .123 and .1aa
  +// (i.e., relying on lexical priority)
  +ID  :   ('a'..'z'|'A'..'Z'|'_'|'.') ('a'..'z'|'A'..'Z'|'0'..'9'|'_'|'.')*
       ;
   
   COMMENT
  
positive.code: CHAR:  '\'' ( ESC_SEQ | ~('\''|'\\') ) '\''
      ;
  
  fragment
  EXPONENT : ('e'|'E') ('+'|'-')? ('0'..'9')+ ;
  
  
negative.code:     :  '+' | '-'
      ;
  
  // Python integers, conformant to 3.4.2 spec
  // Note that leading zeros in a non-zero decimal number are not allowed
  // This is taken care of by the first and second alternatives
  