anchor.diff:      ;
   
   ranges
  -    :   range (',' range)*
  -    ;
  -
  -    range
  +    :   rangeRule (',' rangeRule)*
  +    ;
  +
  +    rangeRule
       :   IntLit
       |   IntLit 'to' IntLit
       ;
  
positive.code:     ;
  
  oneofField
      :   type fieldName '=' fieldNumber ('[' fieldOptions ']')? ';'
      ;
  
  // Map field
  
  mapField
      :   'map' '<' keyType ',' type '>' mapName '=' fieldNumber ('[' fieldOptions ']')? ';'
      ;
  
  keyType
  
negative.code: // Normal field
  
  field
      :   'repeated'? typeRule fieldName '=' fieldNumber ('[' fieldOptions ']')? ';'
      ;
  
  fieldOptions
  