anchor.diff:    | END REMOVE { $l.setDirective(ClawDirective.END_REMOVE); } EOF
   
     // Kcache directive
  -  | KCACHE offset_list[o]
  +  | KCACHE offset_list_optional[o]
       {
         $l.setDirective(ClawDirective.KCACHE);
         $l.setOffsets(o);
  
positive.code:     $r = new ClawRange();
    }
    :
      RANGE '(' induction=IDENTIFIER '=' lower=IDENTIFIER ',' upper=IDENTIFIER ')'
      {
        $r.setInductionVar($induction.text);
        $r.setLowerBound($lower.text);
        $r.setUpperBound($upper.text);
        $r.setStep(Constant.DEFAULT_STEP_VALUE);
      }
    | RANGE '(' induction=IDENTIFIER '=' lower=IDENTIFIER ',' upper=IDENTIFIER ',' step=IDENTIFIER ')'
      {
        $r.setInductionVar($induction.text);
        $r.setLowerBound($lower.text);
        $r.setUpperBound($upper.text);
        $r.setStep($step.text);
      }
  ;
  
  
  
negative.code: RANGE        : 'range';
  
  // Special elements
  IDENTIFIER      : [a-zA-Z_$] [a-zA-Z_$0-9]* ;
  NUMBER          : (DIGIT)+ ;
  fragment DIGIT  : [0-9] ;
  
  // Skip whitspaces
  WHITESPACE   : ( '\t' | ' ' | '\r' | '\n'| '\u000C' )+ { skip(); };