anchor.diff:  
   M_Url_NEWLINE
   :
  -  F_Newline+ -> type ( NEWLINE ) , popMode
  +    F_Newline+ -> type ( NEWLINE ) , popMode
   ;
   
   M_Url_WORD
   :
  -  F_Url -> type ( WORD ) , popMode
  +    F_Url -> type ( WORD ) , popMode
   ;
   
   M_Url_WS
   :
  -  F_Whitespace+ -> channel ( HIDDEN )
  +    F_Whitespace+ -> channel ( HIDDEN )
   ;
positive.code:     F_Newline+
  ;
  
  RANGE
  :
      F_Digit+ '-' F_Digit+
  
negative.code: fragment
  F_PositiveDigit
  :
      [1-9]
  ;
  
  fragment
  F_Uint8
  :
      F_Digit
      | F_PositiveDigit F_Digit
      | '1' F_Digit F_Digit
      | '2' [0-4] F_Digit
      | '25' [0-5]
  ;
  
  fragment
  F_Uint16
  :
      F_Digit
      | F_PositiveDigit F_Digit F_Digit? F_Digit?
      | [1-5] F_Digit F_Digit F_Digit F_Digit
      | '6' [0-4] F_Digit F_Digit F_Digit
      | '65' [0-4] F_Digit F_Digit
      | '655' [0-2] F_Digit
      | '6553' [0-5]
  ;
  
  fragment
  F_Uint32
  :
  // 0-4294967295
      F_Digit
      | F_PositiveDigit F_Digit F_Digit? F_Digit? F_Digit? F_Digit? F_Digit?
      F_Digit? F_Digit?
      | [1-3] F_Digit F_Digit F_Digit F_Digit F_Digit F_Digit F_Digit F_Digit
      F_Digit
      | '4' [0-1] F_Digit F_Digit F_Digit F_Digit F_Digit F_Digit F_Digit F_Digit
      | '42' [0-8] F_Digit F_Digit F_Digit F_Digit F_Digit F_Digit F_Digit
      | '429' [0-3] F_Digit F_Digit F_Digit F_Digit F_Digit F_Digit
      | '4294' [0-8] F_Digit F_Digit F_Digit F_Digit F_Digit
      | '42949' [0-5] F_Digit F_Digit F_Digit F_Digit
      | '429496' [0-6] F_Digit F_Digit F_Digit
      | '4294967' [0-1] F_Digit F_Digit
      | '42949672' [0-8] F_Digit
      | '429496729' [0-5]
  ;
  
  fragment
  F_Url
  :
      F_UrlStart F_UrlInner+
  ;
  
  F_UrlStart
  :
      [a-zA-Z]
  ;
  
  F_UrlInner
  :
      F_UrlInnerAlphaNum
      | F_UrlInnerReserved
      | F_UrlInnerUnreserved
  ;
  
  F_UrlInnerAlphaNum
  :
      [a-zA-Z0-9]
  ;
  
  F_UrlInnerReserved
  :
      [!*'();:@&=+$,/?%#[\]]
  ;
  
  F_UrlInnerUnreserved
  :
      [-_.~]
  ;
  
  fragment
  