anchor.diff:  prefix_arg :
        pow_arg
     |  t_NOT t_FILLER? prefix_arg
  -  |  t_PLUS t_FILLER? prefix_arg
  -  |  t_MINUS t_FILLER? prefix_arg
  +  |  (t_PLUS | t_MINUS) t_FILLER? prefix_arg //NB: plus_arg may break if this is written as two rules
     ;
   
   pow_arg :
  
positive.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 :
  
negative.code:              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 {
  