anchor.diff:  
   primary_expr :
        literal
  -  |  lparen FILLER? expr FILLER? rparen
  +  |  t_lparen FILLER? expr FILLER? t_rparen
     |  matrix
     |  cell_array
     |  access
  
positive.code:      IDENTIFIER
    ;
  
  lparen : LPAREN { bracketStack.push(LPAREN); };
  rparen : RPAREN { bracketStack.pop(); };
  lcurly : LCURLY { bracketStack.push(LCURLY); };
  rcurly : RCURLY { bracketStack.pop(); };
  lsquare : LSQUARE { bracketStack.push(LSQUARE); };
  rsquare : RSQUARE { bracketStack.pop(); };
  
  //NB: not distinguishing between identifiers and keywords at this level - everything is an ID
  //NB: not distinguishing between decimal and hex numbers at this level
  
negative.code:   ;
  
  paren_access :
       cell_access (FILLER? t_lparen FILLER? (arg_list FILLER?)? t_rparen)?
    ;
  
  cell_access :
       name (FILLER? t_lcurly FILLER? arg_list FILLER? t_rcurly)*
    |  {inParens()}? name FILLER? AT FILLER? name
    |  {!inParens()}? name AT name //TODO-AC: fix error message for name AT FILLER name case
    ;
  