private void operandStart() {
        startTokenPos = pos;
        while (pos < numRead) {
            if (isDelimiter(buf[pos])) {
                break;
            }
            pos++;
        }
        if (pos < numRead && pos > startTokenPos) {
            Operator operand = OperatorFactory.getOperator(buf, startTokenPos, pos - startTokenPos);
            // execute differed execution by looking at expression depth.
            if (expressionDepth > 1) {
                stack.push(operand);
            } else {
                // execute the operand
                operand.eval(stack);
                // check if we need to evaluate the top of the stack for a
                // previously stored expression {operands... n}.
                if (stack.peek() instanceof Operator){
                    operand = (Operator)stack.pop();
                    operand.eval(stack);
                }
            }
        }
        parseNextState();
    }