anchor.diff:  
   t_ASSIGN : ASSIGN { offsetTracker.advanceInLine(1); };
   
  -t_LPAREN : LPAREN { offsetTracker.advanceInLine(1); };
  -t_RPAREN : RPAREN { offsetTracker.advanceInLine(1); };
  -t_LCURLY : LCURLY { offsetTracker.advanceInLine(1); };
  -t_RCURLY : RCURLY { offsetTracker.advanceInLine(1); };
  -t_LSQUARE : LSQUARE { offsetTracker.advanceInLine(1); };
  -t_RSQUARE : RSQUARE { offsetTracker.advanceInLine(1); };
  +t_LPAREN : LPAREN { offsetTracker.advanceInLine(1); bracketStack.push(LPAREN); };
  +t_RPAREN : RPAREN { offsetTracker.advanceInLine(1); bracketStack.pop(); };
  +t_LCURLY : LCURLY { offsetTracker.advanceInLine(1); bracketStack.push(LCURLY); };
  +t_RCURLY : RCURLY { offsetTracker.advanceInLine(1); bracketStack.pop(); };
  +t_LSQUARE : LSQUARE { offsetTracker.advanceInLine(1); bracketStack.push(LSQUARE); };
  +t_RSQUARE : RSQUARE { offsetTracker.advanceInLine(1); bracketStack.pop(); };
   
   t_IDENTIFIER : IDENTIFIER { offsetTracker.advanceByTextSize($text); };
   t_NUMBER : NUMBER { offsetTracker.advanceByTextSize($text); };
  
positive.code:              isPrefixOperator(prevToken) || isPostfixOperator(nextToken) ||
               isLParen(prevToken) || isRParen(nextToken));
  }
  }
  
  @lexer::header {
  
negative.code:   |  t_END
    ;
  
  access :
       paren_access (t_FILLER? t_DOT t_FILLER? paren_access)*
    ;
  
  paren_access :
       cell_access (t_FILLER? t_LPAREN t_FILLER? (arg_list t_FILLER?)? t_RPAREN)?
    ;
  
  cell_access :
       name (t_FILLER? t_LCURLY t_FILLER? arg_list t_FILLER? t_RCURLY)*
    |  {!(inSquare() || inCurly())}? name t_FILLER? t_AT t_FILLER? name
    |  {inSquare() || inCurly()}? name t_AT name //TODO-AC: fix error message for name AT FILLER name case
    ;
  
  arg_list :  
       arg (t_FILLER? t_COMMA t_FILLER? arg)*
    ;
  
  literal :
  