anchor.diff:  
   IDENT : [a-zA-Z_] [a-zA-Z0-9_]* ;
   
  -INTEGER_CONSTANT : '-'? [0-9]+ | 'true' | 'false' ;
  +HEX_INTEGER_CONSTANT : [-+]? '0' [xX][0-9a-fA-F]+ ;
  +
  +INTEGER_CONSTANT : [-+]? [0-9]+ | 'true' | 'false' ;
   
   FLOAT_CONSTANT : '-'? [0-9]+ '.' [0-9]+ (('e'|'E') ('+'|'-')? [0-9]+ )? ;
  +
  +BLOCK_COMMENT:	'/*' .*? '*/' -> channel(HIDDEN);
   
   // fixed original grammar: allow line comments
   COMMENT : '//' ~[\r\n]* -> channel(HIDDEN);
   
  -WHITESPACE : [ \t\r\n] -> skip ;+WHITESPACE : [ \t\r\n] -> skip ;
  
positive.code: metadata : ( '(' commasep_ident_with_opt_single_value ')' )? ;
  
  // fix original grammar: enum values (IDENT) are allowed as well
  scalar : INTEGER_CONSTANT | FLOAT_CONSTANT | IDENT ;
  
  object : '{' commasep_ident_with_value '}' ;
  
  
negative.code: 
  ns_ident : IDENT ( '.' IDENT )* ;
  
  integer_const :  INTEGER_CONSTANT | HEX_INTEGER_CONSTANT ;
  
  // Lexer rules
  
  STRING_CONSTANT : '"' ~["\r\n]* '"' ;
  