anchor.diff:    | /* empty */
   ;
   
  -
  -group_option[ClawLanguage l]:
  +// group clause
  +group_clause_optional[ClawLanguage l]:
       GROUP '(' group_name=IDENTIFIER ')'
       { $l.setGroupClause($group_name.text); }
     | /* empty */
   ;
   
  +// collapse clause
   collapse_optional[ClawLanguage l]:
       COLLAPSE '(' n=NUMBER ')'
       { $l.setCollapseClause($n.text); }
     | /* empty */
   ;
   
  +// fusion clause
   fusion_optional[ClawLanguage l]:
  -    FUSION group_option[$l] { $l.setFusionClause(); }
  -  | /* empty */
  -;
  -
  +    FUSION group_clause_optional[$l] { $l.setFusionClause(); }
  +  | /* empty */
  +;
  +
  +// parallel clause
   parallel_optional[ClawLanguage l]:
       PARALLEL { $l.setParallelClause(); }
     | /* empty */
   ;
   
  +// acc clause
   acc_optional[ClawLanguage l]
     @init{
       List<String> tempAcc = new ArrayList<>();
  
positive.code:   | /* empty */
  ;
  
  interchange_optional[ClawLanguage l]:
      INTERCHANGE indexes_option[$l]
      {
  
negative.code:   :
  
    // loop-fusion directive
      LFUSION group_clause_optional[$l] collapse_optional[$l] EOF
      { $l.setDirective(ClawDirective.LOOP_FUSION); }
  
    // loop-interchange directive
  