anchor.diff:  directive[ClawLanguage language]:
       LFUSION { $language.setDirective(ClawDirective.LOOP_FUSION); } group_option
     | LINTERCHANGE { $language.setDirective(ClawDirective.LOOP_INTERCHANGE); } '(' index_list ')'
  -  | LEXTRACT { $language.setDirective(ClawDirective.LOOP_EXTRACT); }
  +  | LEXTRACT { $language.setDirective(ClawDirective.LOOP_EXTRACT); } range_option
     | REMOVE { $language.setDirective(ClawDirective.REMOVE); }
     | END REMOVE { $language.setDirective(ClawDirective.END_REMOVE); }
   ;
  
positive.code: 
  // Options
  GROUP        : 'group';
  
  // Special elements
  IDENTIFIER      : [a-zA-Z_$] [a-zA-Z_$0-9]* ;
  COMMA           : ',' ;
  NUMBER          : (DIGIT)+ ;
  fragment DIGIT  : '0'..'9' ;
  
  
negative.code:     GROUP '(' IDENTIFIER ')'
    | /* empty */
  ;
  
  range_option:
      RANGE '(' IDENTIFIER '=' ')'
  ;
  
  
  
  /*----------------------------------------------------------------------------
   * LEXER RULES
  