code: func tryReadVariableName(input string) (string, bool, int) {
  	switch input[0] {
  	case operator:
  		// Escaped operator; return it.
  		return input[0:1], false, 1
  	case referenceOpener:
  		// Scan to expression closer
  		for i := 1; i < len(input); i++ {
  			if input[i] == referenceCloser {
  				return input[1:i], true, i + 1
  			}
  		}
  
  		// Incomplete reference; return it.
  		return string(operator) + string(referenceOpener), false, 1
  	default:
  		// Not the beginning of an expression, ie, an operator
  		// that doesn't begin an expression.  Return the operator
  		// and the first rune in the string.
  		return (string(operator) + string(input[0])), false, 1
  	}
  }
docs: // tryReadVariableName attempts to read a variable name from the input
  // string and returns the content read from the input, whether that content
  // represents a variable name to perform mapping on, and the number of bytes
  // consumed in the input string.
  //
  // The input string is assumed not to contain the initial operator.