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:  * to be a column delimiter.
   */
  private boolean isElementSeparator() {
      Token prevToken = input.LT(-1);
      Token nextToken = input.LT(2); //2, not 1 because we haven't matched the FILLER yet
      switch(nextToken.getType()) {
  
negative.code:   ;
  
  element :
       expr
    ;
  
  //non-empty
  