private int convertOpts() {
        optEnd = optCur;

        int optPrev = opts[optCur].optPrev;

        do {
            Optimum opt = opts[optCur];

            if (opt.prev1IsLiteral) {
                opts[optPrev].optPrev = optCur;
                opts[optPrev].backPrev = -1;
                optCur = optPrev--;

                if (opt.hasPrev2) {
                    opts[optPrev].optPrev = optPrev + 1;
                    opts[optPrev].backPrev = opt.backPrev2;
                    optCur = optPrev;
                    optPrev = opt.optPrev2;
                }
            }

            int temp = opts[optPrev].optPrev;
            opts[optPrev].optPrev = optCur;
            optCur = optPrev;
            optPrev = temp;
        } while (optCur > 0);

        optCur = opts[0].optPrev;
        back = opts[optCur].backPrev;
        return optCur;
    }
private int convertOpts() {
        optEnd = optCur;

        int optPrev = opts[optCur].optPrev;

        do {
            Optimum opt = opts[optCur];

            if (opt.prev1IsLiteral) {
                opts[optPrev].optPrev = optCur;
                opts[optPrev].backPrev = -1;
                optCur = optPrev--;

                if (opt.hasPrev2) {
                    opts[optPrev].optPrev = optPrev + 1;
                    opts[optPrev].backPrev = opt.backPrev2;
                    optCur = optPrev;
                    optPrev = opt.optPrev2;
                }
            }

            int temp = opts[optPrev].optPrev;
            opts[optPrev].optPrev = optCur;
            optCur = optPrev;
            optPrev = temp;
        } while (optCur > 0);

        optCur = opts[0].optPrev;
        back = opts[optCur].backPrev;
        return optCur;
    }
private int convertOpts ( ) { optEnd = optCur ; int optPrev = opts [ optCur ] . optPrev ; do { Optimum opt = opts [ optCur ] ; if ( opt . prev1IsLiteral ) { opts [ optPrev ] . optPrev = optCur ; opts [ optPrev ] . backPrev = - 1 ; optCur = optPrev -- ; if ( opt . hasPrev2 ) { opts [ optPrev ] . optPrev = optPrev + 1 ; opts [ optPrev ] . backPrev = opt . backPrev2 ; optCur = optPrev ; optPrev = opt . optPrev2 ; } } int temp = opts [ optPrev ] . optPrev ; opts [ optPrev ] . optPrev = optCur ; optCur = optPrev ; optPrev = temp ; } while ( optCur > 0 ) ; optCur = opts [ 0 ] . optPrev ; back = opts [ optCur ] . backPrev ; return optCur ; }
Converts the opts array from backward indexes to forward indexes.
Then it will be simple to get the next symbol from the array
in later calls to <code>getNextSymbol()</code>.
Converts the opts array from backward indexes to forward indexes . Then it will be simple to get the next symbol from the array in later calls to <code > getNextSymbol () < / code > .