anchor.diff:    ;
   
   pow_expr :
  -     postfix_expr ((MPOW | EPOW) FILLER? postfix_expr)*
  +     postfix_expr (FILLER? (MPOW | EPOW) FILLER? postfix_expr)*
     ;
   
   postfix_expr :
  -     primary_expr ((ARRAYTRANSPOSE | MTRANSPOSE) FILLER?)*
  +     primary_expr (FILLER? (ARRAYTRANSPOSE | MTRANSPOSE))*
     ;
   
   primary_expr :
        literal
  -  |  LPAREN FILLER? expr RPAREN FILLER?
  +  |  LPAREN FILLER? expr RPAREN
     |  matrix
     |  cell_array
     |  access
  
positive.code:   ;
  
  row_list :
       row (row_separator+ row)*
    ;
  
  row :
  
negative.code: //all binary operators are left associative so no special handling is required
  expr :
       short_or_expr
    |  AT FILLER? input_params FILLER? expr
    ;
  
  short_or_expr :
       short_and_expr (FILLER? SHORTOR FILLER? short_and_expr)*
    ;
  
  short_and_expr :
       or_expr (FILLER? SHORTAND FILLER? or_expr)*
  
    ;
  
  or_expr :
       and_expr (FILLER? OR FILLER? and_expr)*
    ;
  
  and_expr :
       comp_expr (FILLER? AND FILLER? comp_expr)*
    ;
  
  comp_expr :
       colon_expr (FILLER? (LT | GT | LE | GE | EQ | NE) FILLER? colon_expr)*
    ;
  
  colon_expr :
       plus_expr (FILLER? COLON FILLER? plus_expr (FILLER? COLON FILLER? plus_expr)?)?
    ;
  
  plus_expr :
       binary_expr (FILLER? (PLUS | MINUS) FILLER? binary_expr)*
    ;
  
  binary_expr :
       prefix_expr (FILLER? (MTIMES | ETIMES | MDIV | EDIV | MLDIV | ELDIV) FILLER? prefix_expr)*
    ;
  
  prefix_expr :
  