anchor.diff:          | '$' 
           | ','
           ;
  -        
  -Uric: Reserved 
  -    | ALPHA_NUM 
  -    | Mark 
  -    | PctEncoded
  -    ;+
  +    
  +ALPHA: [a-zA-Z];
  +DIGIT: [0-9];
  +fragment HEX_DIGIT: [A-F0-9];
positive.code:           
  DomainName: ( DomainLabel '.' )* TopLabel ( '.' )?;
            
  fragment DomainLabel: ALPHA_NUM 
                      | ALPHA_NUM ( ALPHA_NUM | '-' )* ALPHA_NUM
                      ;
             
  fragment TopLabel: ALPHA 
                   | ALPHA ( ALPHA_NUM | '-' )* ALPHA_NUM
                   ;
          
  parameter: ';' pName=( ALPHA_NUM | '-' )+ ('=' pValue=(ParamUnreserved | ALPHA_NUM | Mark | PctEncoded)+ )?;
                 
  Mark: '-' 
      | '_' 
  
negative.code:             
  localNumber: localDigits=LocalNumberDigits (extension | isdnSubaddress)? phoneContext parameter*;
  
  isdnSubaddress: ';isub=' isub=(Reserved | ALPHA | DIGIT | Mark | PctEncoded)+;
  
  extension: ';ext=' ext=PhoneDigit+;
  
  