anchor.diff:  
   //NB: only unconditional keywords - the rest will be treated as identifiers and handled in the parser
   
  -BREAK: 'break';
  -CASE: 'case';
  -CATCH: 'catch';
  -CLASSDEF: 'classdef';
  -CONTINUE: 'continue';
  -ELSE: 'else';
  -ELSEIF: 'elseif';
  -END: 'end';
  -FOR: 'for';
  -FUNCTION: 'function';
  -GLOBAL: 'global';
  -IF: 'if';
  -OTHERWISE: 'otherwise';
  -PARFOR: 'parfor';
  -PERSISTENT: 'persistent';
  -RETURN: 'return';
  -SWITCH: 'switch';
  -TRY: 'try';
  -WHILE: 'while';
  +BREAK: { !couldBeFieldName }?=> 'break';
  +CASE: { !couldBeFieldName }?=> 'case';
  +CATCH: { !couldBeFieldName }?=> 'catch';
  +CLASSDEF: { !couldBeFieldName }?=> 'classdef';
  +CONTINUE: { !couldBeFieldName }?=> 'continue';
  +ELSE: { !couldBeFieldName }?=> 'else';
  +ELSEIF: { !couldBeFieldName }?=> 'elseif';
  +END: { !couldBeFieldName }?=> 'end';
  +FOR: { !couldBeFieldName }?=> 'for';
  +FUNCTION: { !couldBeFieldName }?=> 'function';
  +GLOBAL: { !couldBeFieldName }?=> 'global';
  +IF: { !couldBeFieldName }?=> 'if';
  +OTHERWISE: { !couldBeFieldName }?=> 'otherwise';
  +PARFOR: { !couldBeFieldName }?=> 'parfor';
  +PERSISTENT: { !couldBeFieldName }?=> 'persistent';
  +RETURN: { !couldBeFieldName }?=> 'return';
  +SWITCH: { !couldBeFieldName }?=> 'switch';
  +TRY: { !couldBeFieldName }?=> 'try';
  +WHILE: { !couldBeFieldName }?=> 'while';
   
   fragment LETTER : 'a'..'z' | 'A'..'Z';
   fragment DIGIT : '0'..'9';
  -IDENTIFIER : ('_' | '$' | LETTER) ('_' | '$' | LETTER | DIGIT)*;
  +IDENTIFIER : ('_' | '$' | LETTER) ('_' | '$' | LETTER | DIGIT)* { couldBeFieldName = false; };
   fragment INT_NUMBER : DIGIT+;
   fragment SCI_EXP : ('e' | 'E') ('+' | '-')? DIGIT+;
   fragment FP_NUMBER : (DIGIT+ '.' DIGIT*) | ('.' DIGIT+);
  -NUMBER : (INT_NUMBER | FP_NUMBER) SCI_EXP? ('i' | 'I' | 'j' | 'J')?;
  -
  -PLUS : '+';
  -MINUS : '-';
  -MTIMES : '*';
  -ETIMES : '.*';
  -MDIV : '/';
  -EDIV : './';
  -MLDIV : '\\';
  -ELDIV : '.\\';
  -MPOW : '^';
  -EPOW : '.^';
  -MTRANSPOSE : {isPreTransposeChar(input.LA(-1))}? '\'';
  -ARRAYTRANSPOSE : '.\'';
  -LE : '<=';
  -GE : '>=';
  -LT : '<';
  -GT : '>';
  -EQ : '==';
  -NE : '~=';
  -AND : '&';
  -OR : '|';
  -NOT : '~';
  -SHORTAND : '&&';
  -SHORTOR : '||';
  -DOT : '.';
  -COMMA : ',';
  -SEMICOLON : ';';
  -COLON : ':';
  -AT : '@';
  -LPAREN : '(';
  -RPAREN : ')';
  -LCURLY : '{';
  -RCURLY : '}';
  -LSQUARE : '[';
  -RSQUARE : ']';
  -
  -ASSIGN : '=';
  +NUMBER : (INT_NUMBER | FP_NUMBER) SCI_EXP? ('i' | 'I' | 'j' | 'J')? { couldBeFieldName = false; };
  +
  +PLUS : '+' { couldBeFieldName = false; };
  +MINUS : '-' { couldBeFieldName = false; };
  +MTIMES : '*' { couldBeFieldName = false; };
  +ETIMES : '.*' { couldBeFieldName = false; };
  +MDIV : '/' { couldBeFieldName = false; };
  +EDIV : './' { couldBeFieldName = false; };
  +MLDIV : '\\' { couldBeFieldName = false; };
  +ELDIV : '.\\' { couldBeFieldName = false; };
  +MPOW : '^' { couldBeFieldName = false; };
  +EPOW : '.^' { couldBeFieldName = false; };
  +MTRANSPOSE : {isPreTransposeChar(input.LA(-1))}? '\'' { couldBeFieldName = false; };
  +ARRAYTRANSPOSE : '.\'' { couldBeFieldName = false; };
  +LE : '<=' { couldBeFieldName = false; };
  +GE : '>=' { couldBeFieldName = false; };
  +LT : '<' { couldBeFieldName = false; };
  +GT : '>' { couldBeFieldName = false; };
  +EQ : '==' { couldBeFieldName = false; };
  +NE : '~=' { couldBeFieldName = false; };
  +AND : '&' { couldBeFieldName = false; };
  +OR : '|' { couldBeFieldName = false; };
  +NOT : '~' { couldBeFieldName = false; };
  +SHORTAND : '&&' { couldBeFieldName = false; };
  +SHORTOR : '||' { couldBeFieldName = false; };
  +DOT : '.' { couldBeFieldName = true; }; //NB: TRUE
  +COMMA : ',' { couldBeFieldName = false; };
  +SEMICOLON : ';' { couldBeFieldName = false; };
  +COLON : ':' { couldBeFieldName = false; };
  +AT : '@' { couldBeFieldName = false; };
  +LPAREN : '(' { couldBeFieldName = false; };
  +RPAREN : ')' { couldBeFieldName = false; };
  +LCURLY : '{' { couldBeFieldName = false; };
  +RCURLY : '}' { couldBeFieldName = false; };
  +LSQUARE : '[' { couldBeFieldName = false; };
  +RSQUARE : ']' { couldBeFieldName = false; };
  +
  +ASSIGN : '=' { couldBeFieldName = false; };
    
   //NB: matched AFTER transpose
   fragment STRING_CHAR : ~('\'' | '\r' | '\n') | '\'\'';
  -STRING : '\'' STRING_CHAR* '\'';
  +STRING : '\'' STRING_CHAR* '\'' { couldBeFieldName = false; };
   
   fragment BRACKET_COMMENT_FILLER : ~'%' | '%' ~('{' | '}');
   BRACKET_COMMENT : '%{' BRACKET_COMMENT_FILLER* (BRACKET_COMMENT BRACKET_COMMENT_FILLER*)* '%}';
  
positive.code: 
  cell_access :
       name (t_FILLER? t_LCURLY t_FILLER? arg_list t_FILLER? t_RCURLY)*
    |  {inParens()}? name t_FILLER? t_AT t_FILLER? name
    |  {!inParens()}? name t_AT name //TODO-AC: fix error message for name AT FILLER name case
    ;
  
  arg_list :  
  
negative.code:  * to be a column delimiter.
   */
  private boolean isElementSeparator() {
      if(!(inCurly() || inSquare())) {
          return false;
      }
      Token prevToken = input.LT(-1);
  