anchor.diff:      { $l.setDirective(ClawDirective.LOOP_FUSION); }
   
     // loop-interchange directive
  -  | LOOP_INTERCHANGE indexes_option[$l] parallel_clause_optional[$l] acc_optional[$l] EOF
  +  | LOOP_INTERCHANGE indexes_option[$l] loop_interchange_clauses[$l] EOF
       { $l.setDirective(ClawDirective.LOOP_INTERCHANGE); }
   
     // loop-extract directive
  -  | LOOP_EXTRACT range_option mapping_option_list[m] fusion_clause_optional[$l] parallel_clause_optional[$l] acc_optional[$l] EOF
  +  | LOOP_EXTRACT range_option mapping_option_list[m] loop_extract_clauses[$l] EOF
       {
         $l.setDirective(ClawDirective.LOOP_EXTRACT);
         $l.setRange($range_option.r);
  
positive.code:   | /* empty */
  ;
  
  offset_list_optional[List<Integer> offsets]:
      OFFSET '(' offset_list[$offsets] ')'
    | /* empty */
  ;
  
  offset_list[List<Integer> offsets]:
  
negative.code:     }
  
    // Kcache directive
    | KCACHE data_clause[$l] kcache_clauses[$l] EOF
      {
        $l.setDirective(ClawDirective.KCACHE);
      }
  
    // Array notation transformation directive
    | ARRAY_TRANS array_transform_clauses[$l] EOF
      {  $l.setDirective(ClawDirective.ARRAY_TRANSFORM); }
    | END ARRAY_TRANS
      {
  