private void expressionStart() {
        while (pos < numRead) {
            if (!(buf[pos] == '{' || buf[pos] == '}')) {
                break;
            }
            pos++;
        }
        if (pos < numRead) {
            Operator operand = OperatorFactory.getOperator(buf,
                    startTokenPos, pos - startTokenPos);
            // found a start
            if (operand.getType() == OperatorNames.OP_EXP_START) {
                expressionDepth++;
            }
            // if not the first '{' we defer execution by putting it on the stack.
            if (expressionDepth > 1) {
                stack.push(operand);
            }
            // found '}' so we decrement our depth count.
            if (operand.getType() == OperatorNames.OP_EXP_END) {
                expressionDepth--;
            }
        }
        // go baby go!
        parseNextState();
    }