anchor.diff:    ;
   
   matrix :
  -     lsquare FILLER? optional_row_list rsquare
  +     lsquare optional_row_list rsquare
     ;
   
   cell_array :
  -     lcurly FILLER? optional_row_list rcurly
  +     lcurly optional_row_list rcurly
     ;
   
   optional_row_list :
  -     row_list? row_separator_list?
  +     quiet_row_separator_list row_list quiet_row_separator_list
  +  |  quiet_row_separator_list
     ;
   
   row_list :
  
positive.code:   ;
  
  row :
       element_list element_separator_list?
    ;
  
  row_separator_list :
       row_separator (element_separator_list? row_separator)*
    ;
  
  row_separator :
  
negative.code:   ;
  
  element_separator_comma :
       {isPrevTokenElementSeparator()}? COMMA {System.err.println("deleting comma " + retval.start);}-> template() "" //delete comma
    |  COMMA                                                   //just echo
    ;
  
  