void FsmAp::notFinalFromStateAction( int ordering, Action *action ) { for ( StateList::Iter state = stateList; state.lte(); state++ ) { if ( ! state->isFinState() ) state->fromStateActionTable.setAction( ordering, action ); } }
void FsmAp::notFinalErrorAction( int ordering, Action *action, int transferPoint ) { for ( StateList::Iter state = stateList; state.lte(); state++ ) { if ( ! state->isFinState() ) state->errActionTable.setAction( ordering, action, transferPoint ); } }
void FsmAp::middleFromStateAction( int ordering, Action *action ) { /* Set the action in all states that are not the start state and not final. */ for ( StateList::Iter state = stateList; state.lte(); state++ ) { if ( state != startState && ! state->isFinState() ) state->fromStateActionTable.setAction( ordering, action ); } }
/* Set error actions in the states that have transitions into a final state. */ void FsmAp::middleErrorAction( int ordering, Action *action, int transferPoint ) { /* Isolate the start state in case it is reachable from in inside the * machine, in which case we don't want it set. */ for ( StateList::Iter state = stateList; state.lte(); state++ ) { if ( state != startState && ! state->isFinState() ) state->errActionTable.setAction( ordering, action, transferPoint ); } }
void BackendGen::makeStateList() { /* Write the list of states. */ long length = fsm->stateList.length(); cgd->initStateList( length ); curState = 0; for ( StateList::Iter st = fsm->stateList; st.lte(); st++ ) { makeStateActions( st ); makeEofTrans( st ); makeStateConditions( st ); makeTransList( st ); long id = st->alg.stateNum; cgd->setId( curState, id ); if ( st->isFinState() ) cgd->setFinal( curState ); curState += 1; } }
void XMLCodeGen::writeStateList() { /* Write the list of states. */ out << " <state_list length=\"" << fsm->stateList.length() << "\">\n"; for ( StateList::Iter st = fsm->stateList; st.lte(); st++ ) { out << " <state id=\"" << st->alg.stateNum << "\""; if ( st->isFinState() ) out << " final=\"t\""; out << ">\n"; writeStateActions( st ); writeEofTrans( st ); writeStateConditions( st ); writeTransList( st ); out << " </state>\n"; if ( !st.last() ) out << "\n"; } out << " </state_list>\n"; }