anchor.diff:     ;
   
   branch
  -   : LITERAL_BRANCH BRANCH SEMI
  +   : LITERAL_BRANCH REVISION SEMI
      ;
   
   access
  
positive.code: 
  
  REVISION
     : INT '.' INT ( '.' INT '.' INT )*
     ;
  
  // string literals
  
  STRING
     : '@' (
     /*	'\r' '\n' can be matched in one alternative or by matching
  				'\r' in one iteration and '\n' in another.  I am trying to
  				handle any flavor of newline that comes in, but the language
  				that allows both "\r\n" and "\r" and "\n" to all be valid
  				newline is ambiguous.  Consequently, the resulting grammar
  				must be ambiguous.  I'm shutting this warning off.
  			 */
     /*			options {
  				generateAmbigWarnings=false;
  			}
  		:*/
     //{ LA(2)!='@' }?  '@' '@' | ( '\r\n' | '\r' | '\n' ) | ~ ( '@' | '\n' | '\r' ) )* '@'
     )
     ;
  
  
  SEMI
  
negative.code: 
  COMMA
     : 'COMMA'
     ;
  
  
  