getNextToken(decimalCharacter = '.') {
        this._skipSpaces();

        // Test for the end of text
        if (this.textLength === this.index) {
            this.token.type = 'EOT'; // End of text

            return this.token;
        }

        // If the current character is a digit read a number
        if (AutoNumericHelper.isDigit(this.text[this.index])) {
            this.token.type  = 'num';
            this.token.value = this._getNumber(decimalCharacter);

            return this.token;
        }

        // Check if the current character is an operator or parentheses
        this.token.type = 'Error';
        switch (this.text[this.index]) {
            case '+': this.token.type = '+'; break;
            case '-': this.token.type = '-'; break;
            case '*': this.token.type = '*'; break;
            case '/': this.token.type = '/'; break;
            case '(': this.token.type = '('; break;
            case ')': this.token.type = ')'; break;
        }

        if (this.token.type !== 'Error') {
            this.token.symbol = this.text[this.index];
            this.index++;
        } else {
            throw new Error(`Unexpected token '${this.token.symbol}' at position '${this.token.index}' in the token function`);
        }

        return this.token;
    }
Return the next token object

@param {string} decimalCharacter The decimal character to use in the float numbers
@returns {Token}