anchor.diff:               isPrefixOperator(prevToken) || isPostfixOperator(nextToken) ||
                isLParen(prevToken) || isRParen(nextToken));
   }
  -
  -private final java.util.Stack<Integer> bracketStack = new java.util.Stack<Integer>();
  -private boolean inParens() { return !bracketStack.isEmpty() && bracketStack.peek() == LPAREN; }
  -private boolean inCurly() { return !bracketStack.isEmpty() && bracketStack.peek() == LCURLY; }
  -private boolean inSquare() { return !bracketStack.isEmpty() && bracketStack.peek() == LSQUARE; }
   }
   
   @lexer::header {
  
positive.code:   ;
  
  element_list :
       element (element_separator_list element)*
    ;
  
  element :
       expr
    ;
  
  //non-empty
  
negative.code: 
  maybe_cmd options{ backtrack=true; } :
       expr (t_FILLER? t_ASSIGN t_FILLER? expr)? t_FILLER?
    |  t_IDENTIFIER cmd_args //TODO-AC: re-enable once I figure out side-effects/backtracking
    ;
  
  cmd_args :
  