anchor.diff:  CPEQ: '==';
   
   /* Names of variables and functions */
  -ID: ('a'..'z' | 'A'..'Z')+('?')?;
  +ID
  +    : ('a'..'z' | 'A'..'Z')+('?')?
  +    | '%'
  +    ;
   
   SYMBOL: ':' ID;
   
  
positive.code:     | for_loop {$code = $for_loop.code; }
      | conditional {$code = $conditional.code; }
      | let_statement {$code = $let_statement.code; }
      | '(' expression ')' {$code = $expression.code; }
      ;
  
  
negative.code: 
  func_type_annotation returns [String code]
      : first=type_annotation {$code = $first.code;} (next=type_annotation {$code += " " + $next.code;})*
      ;
  
  
  lambda returns [String code]
      : '#(' expression ')' {$code="#("+$expression.code+")";}
      ;
  
  val_assignment returns [String code]
  