anchor.diff:  grammar Shadow;
   
   @header {
  -	package shadow.parse;
  +package shadow.parse;
   }
   
   @lexer::members {    
  
positive.code: // Literals
  
  ByteLiteral // Can't end with b or B because of hex digits.
  	  : DecimalLiteral ('y'|'Y')
        | HexLiteral ('y'|'Y')
        | BinaryLiteral ('y'|'Y')
        | OctalLiteral ('y'|'Y')    
  	  ;
  UByteLiteral // Can't end with b or B because of hex digits.
  	  : DecimalLiteral ('u'|'U')('y'|'Y')
        | HexLiteral ('u'|'U')('y'|'Y')
        | BinaryLiteral ('u'|'U')('y'|'Y')
        | OctalLiteral ('u'|'U')('y'|'Y')
  	  ;
  
  ShortLiteral
  	  : DecimalLiteral ('s'|'S')
        | HexLiteral ('s'|'S')
        | BinaryLiteral ('s'|'S')
        | OctalLiteral ('s'|'S')    
  	  ;
  	  
  UShortLiteral
  	  : DecimalLiteral ('u'|'U')('s'|'S')
        | HexLiteral ('u'|'U')('s'|'S')
        | BinaryLiteral ('u'|'U')('s'|'S')
        | OctalLiteral ('u'|'U')('s'|'S')
        ;
  	  
  IntLiteral
  	  : DecimalLiteral ('i'|'I')?
        | HexLiteral ('i'|'I')?
        | BinaryLiteral ('i'|'I')?
        | OctalLiteral ('i'|'I')?
        ;
  	  	  
  UIntLiteral
  	  : DecimalLiteral ('u'|'U')('i'|'I')?
        | HexLiteral ('u'|'U')('i'|'I')?
        | BinaryLiteral ('u'|'U')('i'|'I')?
        | OctalLiteral ('u'|'U')('i'|'I')?
  	  ;
  	  
  LongLiteral
  	  : DecimalLiteral ('l'|'L')
        | HexLiteral ('l'|'L')
        | BinaryLiteral ('l'|'L')
        | OctalLiteral ('l'|'L')      
  	  ;
  	  
  ULongLiteral
  	  : DecimalLiteral ('u'|'U')('l'|'L')
        | HexLiteral ('u'|'U')('l'|'L')
        | BinaryLiteral ('u'|'U')('l'|'L')
        | OctalLiteral ('u'|'U')('l'|'L')	
  	  ;
  
  fragment
  
negative.code:     |   '\\' [0-7] [0-7]?
      |   '\\' [0-3] [0-7] [0-7]
      ;
  
  
  BooleanLiteral
  	: 'true'
  	| 'false'
  	;
      
  VersionLiteral
  	:  '$' [0-9]+ '.' [0-9]+ '.' [0-9]+
  	;
  
  // Separators
  
  