anchor.diff:  colon_expr :
        plus_expr (t_FILLER? t_COLON t_FILLER? plus_expr (t_FILLER? t_COLON t_FILLER? plus_expr)?)?
     ;
  -
  +  
   plus_expr :
        binary_expr (t_FILLER? (t_PLUS | t_MINUS) t_FILLER? binary_expr)*
     ;
  
positive.code: 
  //// LEXER /////////////////////////////////////////////////////////////////////
  
  //NB: not distinguishing between identifiers and keywords at this level - everything is an ID
  //NB: not distinguishing between decimal and hex numbers at this level
  
  fragment LETTER : 'a'..'z' | 'A'..'Z';
  fragment DIGIT : '0'..'9';
  
negative.code: fragment NOT_LINE_TERMINATOR : ~('\r' | '\n');
  COMMENT : '%' | '%' ~'{' NOT_LINE_TERMINATOR*;
  
  SHELL_COMMAND : '!' NOT_LINE_TERMINATOR*;
  
  LINE_TERMINATOR : '\r' '\n' | '\r' | '\n';
  
  fragment ELLIPSIS_COMMENT : '...' NOT_LINE_TERMINATOR* LINE_TERMINATOR;
  