anchor.diff:    |  t_AT t_FILLER? name
     ;
   
  +expr_in_array :
  +     short_or_expr_in_array
  +  |  t_AT t_FILLER? input_params t_FILLER? expr_in_array
  +  ;
  +
  +short_or_expr_in_array :
  +     short_and_expr_in_array (t_FILLER? t_SHORTOR t_FILLER? short_and_expr_in_array)*
  +  ;
  +
  +short_and_expr_in_array :
  +     or_expr_in_array (t_FILLER? t_SHORTAND t_FILLER? or_expr_in_array)*
  +  ;
  +
  +or_expr_in_array :
  +     and_expr_in_array (t_FILLER? t_OR t_FILLER? and_expr_in_array)*
  +  ;
  +
  +and_expr_in_array :
  +     comp_expr_in_array (t_FILLER? t_AND t_FILLER? comp_expr_in_array)*
  +  ;
  +
  +comp_expr_in_array :
  +     colon_expr_in_array (t_FILLER? (t_LT | t_GT | t_LE | t_GE | t_EQ | t_NE) t_FILLER? colon_expr_in_array)*
  +  ;
  +
  +colon_expr_in_array :
  +     plus_expr_in_array (t_FILLER? t_COLON t_FILLER? plus_expr_in_array (t_FILLER? t_COLON t_FILLER? plus_expr_in_array)?)?
  +  ;
  +
  +//TODO-AC: antlr periodically has trouble with this (because of unary plus?)
  +plus_expr_in_array :
  +     binary_expr_in_array (t_FILLER? (t_PLUS | t_MINUS) t_FILLER? binary_expr_in_array)*
  +  ;
  +
  +binary_expr_in_array :
  +     prefix_expr_in_array (t_FILLER? (t_MTIMES | t_ETIMES | t_MDIV | t_EDIV | t_MLDIV | t_ELDIV) t_FILLER? prefix_expr_in_array)*
  +  ;
  +
  +prefix_expr_in_array :
  +     pow_expr_in_array
  +  |  t_NOT t_FILLER? prefix_expr_in_array
  +  |  (t_PLUS | t_MINUS) t_FILLER? prefix_expr_in_array //NB: plus_expr_in_array breaks if this is written as two rules
  +  ;
  +
  +pow_expr_in_array :
  +     postfix_expr_in_array (t_FILLER? (t_MPOW | t_EPOW) t_FILLER? postfix_expr_in_array)*
  +  ;
  +
  +postfix_expr_in_array :
  +     primary_expr_in_array (t_FILLER? (t_ARRAYTRANSPOSE | t_MTRANSPOSE))*
  +  ;
  +
  +primary_expr_in_array :
  +     literal
  +  |  t_LPAREN t_FILLER? expr t_FILLER? t_RPAREN
  +  |  matrix
  +  |  cell_array
  +  |  access_in_array
  +  |  t_AT t_FILLER? name
  +  ;
  +
   //TODO-AC: This is separate from expr because it allows t_COLON and t_END
   //  This shouldn't be necessary - dynamic scopes should handle this.
   //  See revision 709 for an implementation with dynamic scopes.
  
positive.code:   |  t_END
    ;
  
  access :
       paren_access (t_FILLER? t_DOT t_FILLER? paren_access)*
    ;
  
negative.code:              isPrefixOperator(prevToken) || isPostfixOperator(nextToken) ||
               isLParen(prevToken) || isRParen(nextToken));
  }
  }
  
  @lexer::header {
  