anchor.diff:  // Byte String Literals according to Python 3.4.2 grammar
   // Bytes are always prefixed with 'b' or 'B', and can only contain ASCII
   // Any byte with a numeric value of >= 128 must be escaped
  +//
  +// Also implemented code refactoring to reduce runtime size of parser
   
   STRING
       : (STRPREFIX)? (SLSTRING)+
  
positive.code:     : ('0'..'9'|'a'..'f'|'A'..'F')
      ;
  
  // Escape sequences
  // Simple escape sequences like \n, \t, \\ are taken from Stroustrup.
  // Octal escape sequences are either 1, 2, or 3 octal digits exactly.
  // Hexadecimal escape sequences begin with \x and are exactly 2 digits long
  // No handling of tri-graph sequences.
  fragment
  ESC_SEQ
      : '\\' ('a'|'b'|'f'|'n'|'r'|'t'|'v'|'"'|'\''|'\\')
      | HEX_ESC
      | OCTAL_ESC
      | UNICODE_ESC
      ;
  
  fragment
  HEX_ESC
      : '0' ('x' | 'X') HEX_DIGIT HEX_DIGIT
      ;
  
  fragment
  OCTAL_ESC
      :   '\\' ('0'..'3') ('0'..'7') ('0'..'7')
      |   '\\' ('0'..'7') ('0'..'7')
      |   '\\' ('0'..'7')
      ;
  
  fragment
  UNICODE_CHARS
      : HEX_DIGIT HEX_DIGIT HEX_DIGIT HEX_DIGIT
      ;
  
  fragment
  UNICODE_ESC
      : 'U' UNICODE_CHARS UNICODE_CHARS
      | 'u' UNICODE_CHARS
      ;
  
  fragment
  DIGIT
      : ('0'..'9')
      ;
  
  fragment FLOAT_NO_EXP
      : INT_PART? FRAC_PART
      | INT_PART '.'
      ;
  
  
  fragment FLOAT_EXP
      : ( INT_PART | FLOAT_NO_EXP ) EXPONENT
      ;
  
  
  fragment INT_PART
      : DIGIT+
      ;
  
  
  fragment FRAC_PART
      : '.' DIGIT+
      ;
  
  // The following fragments are for string handling
  
  // handle only raw and unicode for now; any form of 'ur' is illegal
  fragment
  STRPREFIX
      : 'r' | 'R' | 'u' | 'U'
  
negative.code:     : '\\' .
      ;
  
  // The first two are single-line string with single- and double-quotes
  // The second two are multi-line strings with single- and double quotes
  fragment
  SLSTRING
      : '\'' (STRING_ESC | ~('\\' | '\r' | '\n' | '\'') )* '\''
      | '"' (STRING_ESC | ~('\\' | '\r' | '\n' | '"') )* '"'
      | '\'\'\'' (STRING_ESC | ~('\\') )* '\'\'\''
      | '"""' (STRING_ESC | ~('\\') )* '"""'
      ;
  
  
  