Exemplo n.º 1
0
TFiniteAutomaton& TFiniteAutomaton::Iterate() {
    // FIXME: expected exactly one final state
    const size_t mySize = Size(), myFinal = *FinalStates.begin();
    Resize(mySize + 2);

    AddTransition(mySize, StartState);
    AddTransition(myFinal, mySize + 1);
    AddTransition(myFinal, StartState);
    AddTransition(mySize, mySize + 1);

    SetStartState(mySize);
    SetFinalState(myFinal, false);
    SetFinalState(mySize + 1);

    return *this;
}
Exemplo n.º 2
0
TFiniteAutomaton& TFiniteAutomaton::operator += (const TFiniteAutomaton& rhs) {
    // FIXME: expected exactly one final state
    const size_t mySize = Size(), myFinal = *FinalStates.begin();
    Import(rhs);  // import final states along with transitions
    AddTransition(myFinal, mySize + rhs.StartState);
    SetFinalState(myFinal, false);
    return *this;
}
Exemplo n.º 3
0
TFiniteAutomaton& TFiniteAutomaton::operator |= (const TFiniteAutomaton& rhs) {
    // FIXME: expected exactly one final state from both the automata
    const size_t mySize = Size(), myFinal = *FinalStates.begin();
    Import(rhs);
    const size_t newSize = Size();
    Resize(newSize + 2);

    AddTransition(newSize, StartState);
    AddTransition(newSize, mySize + rhs.StartState);
    AddTransition(myFinal, newSize + 1);
    AddTransition(mySize + *rhs.FinalStates.begin(), newSize + 1);

    SetStartState(newSize);
    SetFinalState(myFinal, false);
    SetFinalState(mySize + *rhs.FinalStates.begin(), false);
    SetFinalState(newSize + 1);

    return *this;
}
Exemplo n.º 4
0
int CreateQueue() {

	SetFinalState();

	if (!(myQueue = (Queue*)malloc(sizeof(Queue)))){
		printf("%s\n", "Creation of the Queue has failed!");
		return 0;
	}

	myQueue->numberOfElements = 0;
	myQueue->firstState = NULL;
	myQueue->queueHead = NULL;

	myMode = GREEDY;

	return 1;
}