std::ostream &JavaTabCodeGen::RANGE_LENS() { for ( RedStateList::Iter st = redFsm->stateList; st.lte(); st++ ) { /* Emit length of range index. */ ARRAY_ITEM( INT(st->outRange.length()), st.last() ); } return out; }
std::ostream &JavaTabCodeGen::SINGLE_LENS() { for ( RedStateList::Iter st = redFsm->stateList; st.lte(); st++ ) { /* Write singles length. */ ARRAY_ITEM( INT(st->outSingle.length()), st.last() ); } return out; }
std::ostream &JavaTabCodeGen::EOF_ACTIONS() { for ( RedStateList::Iter st = redFsm->stateList; st.lte(); st++ ) { /* Write any eof action. */ ARRAY_ITEM( INT(EOF_ACTION(st)), st.last() ); } return out; }
std::ostream &RubyTabCodeGen::EOF_ACTIONS() { START_ARRAY_LINE(); int totalStateNum = 0; for ( RedStateList::Iter st = redFsm->stateList; st.lte(); st++ ) { /* Write any eof action. */ ARRAY_ITEM( INT(EOF_ACTION(st)), ++totalStateNum, st.last() ); } END_ARRAY_LINE(); return out; }
std::ostream &RubyTabCodeGen::SINGLE_LENS() { START_ARRAY_LINE(); int totalStateNum = 0; for ( RedStateList::Iter st = redFsm->stateList; st.lte(); st++ ) { /* Write singles length. */ ARRAY_ITEM( INT(st->outSingle.length()), ++totalStateNum, st.last() ); } END_ARRAY_LINE(); return out; }
std::ostream &RubyTabCodeGen::RANGE_LENS() { START_ARRAY_LINE(); int totalStateNum = 0; for ( RedStateList::Iter st = redFsm->stateList; st.lte(); st++ ) { /* Emit length of range index. */ ARRAY_ITEM( INT(st->outRange.length()), ++totalStateNum, st.last() ); } END_ARRAY_LINE(); return out; }
std::ostream &JavaTabCodeGen::KEY_OFFSETS() { int curKeyOffset = 0; for ( RedStateList::Iter st = redFsm->stateList; st.lte(); st++ ) { /* Write the key offset. */ ARRAY_ITEM( INT(curKeyOffset), st.last() ); /* Move the key offset ahead. */ curKeyOffset += st->outSingle.length() + st->outRange.length()*2; } return out; }
std::ostream &RubyTabCodeGen::KEY_OFFSETS() { START_ARRAY_LINE(); int totalStateNum = 0, curKeyOffset = 0; for ( RedStateList::Iter st = redFsm->stateList; st.lte(); st++ ) { /* Write the key offset. */ ARRAY_ITEM( INT(curKeyOffset), ++totalStateNum, st.last() ); /* Move the key offset ahead. */ curKeyOffset += st->outSingle.length() + st->outRange.length()*2; } END_ARRAY_LINE(); return out; }
std::ostream &JavaTabCodeGen::INDEX_OFFSETS() { int curIndOffset = 0; for ( RedStateList::Iter st = redFsm->stateList; st.lte(); st++ ) { /* Write the index offset. */ ARRAY_ITEM( INT(curIndOffset), st.last() ); /* Move the index offset ahead. */ curIndOffset += st->outSingle.length() + st->outRange.length(); if ( st->defTrans != 0 ) curIndOffset += 1; } return out; }
std::ostream &JavaTabCodeGen::EOF_TRANS() { for ( RedStateList::Iter st = redFsm->stateList; st.lte(); st++ ) { /* Write any eof action. */ long trans = 0; if ( st->eofTrans != 0 ) { assert( st->eofTrans->pos >= 0 ); trans = st->eofTrans->pos+1; } /* Write any eof action. */ ARRAY_ITEM( INT(trans), st.last() ); } return out; }
std::ostream &TabCodeGen::EOF_ACTIONS() { out << "\t"; int totalStateNum = 0; for ( RedStateList::Iter st = redFsm->stateList; st.lte(); st++ ) { /* Write any eof action. */ EOF_ACTION(st); if ( !st.last() ) { out << ", "; if ( ++totalStateNum % IALL == 0 ) out << "\n\t"; } } out << "\n"; return out; }
std::ostream &TabCodeGen::RANGE_LENS() { out << "\t"; int totalStateNum = 0; for ( RedStateList::Iter st = redFsm->stateList; st.lte(); st++ ) { /* Emit length of range index. */ out << st->outRange.length(); if ( !st.last() ) { out << ", "; if ( ++totalStateNum % IALL == 0 ) out << "\n\t"; } } out << "\n"; return out; }
std::ostream &TabCodeGen::SINGLE_LENS() { out << "\t"; int totalStateNum = 0; for ( RedStateList::Iter st = redFsm->stateList; st.lte(); st++ ) { /* Write singles length. */ out << st->outSingle.length(); if ( !st.last() ) { out << ", "; if ( ++totalStateNum % IALL == 0 ) out << "\n\t"; } } out << "\n"; return out; }
std::wostream &CSharpTabCodeGen::COND_LENS() { out << L"\t"; int totalStateNum = 0; for ( RedStateList::Iter st = redFsm->stateList; st.lte(); st++ ) { /* Write singles length. */ out << st->stateCondList.length(); if ( !st.last() ) { out << L", "; if ( ++totalStateNum % IALL == 0 ) out << L"\n\t"; } } out << L"\n"; return out; }
std::ostream &RubyTabCodeGen::EOF_TRANS() { START_ARRAY_LINE(); int totalStateNum = 0; for ( RedStateList::Iter st = redFsm->stateList; st.lte(); st++ ) { /* Write any eof action. */ long trans = 0; if ( st->eofTrans != 0 ) { assert( st->eofTrans->pos >= 0 ); trans = st->eofTrans->pos+1; } /* Write any eof action. */ ARRAY_ITEM( INT(trans), ++totalStateNum, st.last() ); } END_ARRAY_LINE(); return out; }
std::ostream &TabCodeGen::KEY_OFFSETS() { out << "\t"; int totalStateNum = 0, curKeyOffset = 0; for ( RedStateList::Iter st = redFsm->stateList; st.lte(); st++ ) { /* Write the key offset. */ out << curKeyOffset; if ( !st.last() ) { out << ", "; if ( ++totalStateNum % IALL == 0 ) out << "\n\t"; } /* Move the key offset ahead. */ curKeyOffset += st->outSingle.length() + st->outRange.length()*2; } out << "\n"; return out; }
std::ostream &CSharpFlatCodeGen::COND_KEY_SPANS() { out << "\t"; int totalStateNum = 0; for ( RedStateList::Iter st = redFsm->stateList; st.lte(); st++ ) { /* Write singles length. */ unsigned long long span = 0; if ( st->condList != 0 ) span = keyOps->span( st->condLowKey, st->condHighKey ); out << span; if ( !st.last() ) { out << ", "; if ( ++totalStateNum % IALL == 0 ) out << "\n\t"; } } out << "\n"; return out; }
std::wostream &CSharpTabCodeGen::COND_OFFSETS() { out << L"\t"; int totalStateNum = 0, curKeyOffset = 0; for ( RedStateList::Iter st = redFsm->stateList; st.lte(); st++ ) { /* Write the key offset. */ out << curKeyOffset; if ( !st.last() ) { out << L", "; if ( ++totalStateNum % IALL == 0 ) out << L"\n\t"; } /* Move the key offset ahead. */ curKeyOffset += st->stateCondList.length(); } out << L"\n"; return out; }
std::ostream &CSharpFlatCodeGen::COND_INDEX_OFFSET() { out << "\t"; int totalStateNum = 0, curIndOffset = 0; for ( RedStateList::Iter st = redFsm->stateList; st.lte(); st++ ) { /* Write the index offset. */ out << curIndOffset; if ( !st.last() ) { out << ", "; if ( ++totalStateNum % IALL == 0 ) out << "\n\t"; } /* Move the index offset ahead. */ if ( st->condList != 0 ) curIndOffset += keyOps->span( st->condLowKey, st->condHighKey ); } out << "\n"; return out; }
std::ostream &CSharpTabCodeGen::INDEX_OFFSETS() { out << "\t"; int totalStateNum = 0, curIndOffset = 0; for ( RedStateList::Iter st = redFsm->stateList; st.lte(); st++ ) { /* Write the index offset. */ out << curIndOffset; if ( !st.last() ) { out << ", "; if ( ++totalStateNum % IALL == 0 ) out << "\n\t"; } /* Move the index offset ahead. */ curIndOffset += st->outSingle.length() + st->outRange.length(); if ( st->defTrans != 0 ) curIndOffset += 1; } out << "\n"; return out; }
std::ostream &TabCodeGen::EOF_TRANS() { out << "\t"; int totalStateNum = 0; for ( RedStateList::Iter st = redFsm->stateList; st.lte(); st++ ) { /* Write any eof action. */ long trans = 0; if ( st->eofTrans != 0 ) { assert( st->eofTrans->pos >= 0 ); trans = st->eofTrans->pos+1; } out << trans; if ( !st.last() ) { out << ", "; if ( ++totalStateNum % IALL == 0 ) out << "\n\t"; } } out << "\n"; return out; }
void CodeGenData::setValueLimits() { redFsm->maxSingleLen = 0; redFsm->maxRangeLen = 0; redFsm->maxKeyOffset = 0; redFsm->maxIndexOffset = 0; redFsm->maxActListId = 0; redFsm->maxActionLoc = 0; redFsm->maxActArrItem = 0; redFsm->maxSpan = 0; redFsm->maxCondSpan = 0; redFsm->maxFlatIndexOffset = 0; redFsm->maxCondOffset = 0; redFsm->maxCondLen = 0; redFsm->maxCondSpaceId = 0; redFsm->maxCondIndexOffset = 0; /* In both of these cases the 0 index is reserved for no value, so the max * is one more than it would be if they started at 0. */ redFsm->maxIndex = redFsm->transSet.length(); redFsm->maxCond = condSpaceList.length(); /* The nextStateId - 1 is the last state id assigned. */ redFsm->maxState = redFsm->nextStateId - 1; for ( CondSpaceList::Iter csi = condSpaceList; csi.lte(); csi++ ) { if ( csi->condSpaceId > redFsm->maxCondSpaceId ) redFsm->maxCondSpaceId = csi->condSpaceId; } for ( RedStateList::Iter st = redFsm->stateList; st.lte(); st++ ) { /* Maximum cond length. */ if ( st->stateCondList.length() > redFsm->maxCondLen ) redFsm->maxCondLen = st->stateCondList.length(); /* Maximum single length. */ if ( st->outSingle.length() > redFsm->maxSingleLen ) redFsm->maxSingleLen = st->outSingle.length(); /* Maximum range length. */ if ( st->outRange.length() > redFsm->maxRangeLen ) redFsm->maxRangeLen = st->outRange.length(); /* The key offset index offset for the state after last is not used, skip it.. */ if ( ! st.last() ) { redFsm->maxCondOffset += st->stateCondList.length(); redFsm->maxKeyOffset += st->outSingle.length() + st->outRange.length()*2; redFsm->maxIndexOffset += st->outSingle.length() + st->outRange.length() + 2; } /* Max cond span. */ if ( st->condList != 0 ) { unsigned long long span = keyOps->span( st->condLowKey, st->condHighKey ); if ( span > redFsm->maxCondSpan ) redFsm->maxCondSpan = span; } /* Max key span. */ if ( st->transList != 0 ) { unsigned long long span = keyOps->span( st->lowKey, st->highKey ); if ( span > redFsm->maxSpan ) redFsm->maxSpan = span; } /* Max cond index offset. */ if ( ! st.last() ) { if ( st->condList != 0 ) redFsm->maxCondIndexOffset += keyOps->span( st->condLowKey, st->condHighKey ); } /* Max flat index offset. */ if ( ! st.last() ) { if ( st->transList != 0 ) redFsm->maxFlatIndexOffset += keyOps->span( st->lowKey, st->highKey ); redFsm->maxFlatIndexOffset += 1; } } for ( GenActionTableMap::Iter at = redFsm->actionMap; at.lte(); at++ ) { /* Maximum id of action lists. */ if ( at->actListId+1 > redFsm->maxActListId ) redFsm->maxActListId = at->actListId+1; /* Maximum location of items in action array. */ if ( at->location+1 > redFsm->maxActionLoc ) redFsm->maxActionLoc = at->location+1; /* Maximum values going into the action array. */ if ( at->key.length() > redFsm->maxActArrItem ) redFsm->maxActArrItem = at->key.length(); for ( GenActionTable::Iter item = at->key; item.lte(); item++ ) { if ( item->value->actionId > redFsm->maxActArrItem ) redFsm->maxActArrItem = item->value->actionId; } } }