[fix] 删掉一部分无用函数
This commit is contained in:
parent
1af61d2eef
commit
5a11da7827
45
nfa/nfa.cpp
45
nfa/nfa.cpp
|
|
@ -89,51 +89,6 @@ NFA RexToNFA() {
|
||||||
return NFA(startState, endStates, allStates);
|
return NFA(startState, endStates, allStates);
|
||||||
}
|
}
|
||||||
|
|
||||||
// 构造状态机
|
|
||||||
NFA buildNFA(string filename) {
|
|
||||||
ifstream ifs(filename);
|
|
||||||
if (!ifs) {
|
|
||||||
cerr << "Cannot open file: " << filename << endl;
|
|
||||||
exit(EXIT_FAILURE);
|
|
||||||
}
|
|
||||||
|
|
||||||
int stateNum, inputNum;
|
|
||||||
ifs >> stateNum >> inputNum;
|
|
||||||
|
|
||||||
vector<State*> states(stateNum);
|
|
||||||
for (int i = 0; i < stateNum; i++) {
|
|
||||||
states[i] = new State(i);
|
|
||||||
}
|
|
||||||
|
|
||||||
State* startState = states[0];
|
|
||||||
set<State*, StatePtrCompare> endStates;
|
|
||||||
for (int i = 0; i < stateNum; i++) {
|
|
||||||
for (int j = 0; j < inputNum; j++) {
|
|
||||||
string targetStateIDs;
|
|
||||||
ifs >> targetStateIDs;
|
|
||||||
if (targetStateIDs.compare("#") != 0) {
|
|
||||||
stringstream ss(targetStateIDs);
|
|
||||||
string targetStateIDStr;
|
|
||||||
while (getline(ss, targetStateIDStr, ',')) {
|
|
||||||
int targetStateID = stoi(targetStateIDStr);
|
|
||||||
states[i]->addTransition(static_cast<InputCharType>(j), states[targetStateID]);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
int endStateNum;
|
|
||||||
ifs >> endStateNum;
|
|
||||||
for (int i = 0; i < endStateNum; i++) {
|
|
||||||
int endStateID, wordTypeID;
|
|
||||||
ifs >> endStateID >> wordTypeID;
|
|
||||||
states[endStateID]->setFinalState(true, static_cast<WordType>(wordTypeID));
|
|
||||||
endStates.insert(states[endStateID]);
|
|
||||||
}
|
|
||||||
|
|
||||||
return NFA(startState, endStates, set<State*, StatePtrCompare>(states.begin(), states.end()));
|
|
||||||
}
|
|
||||||
|
|
||||||
void printNFA(const NFA& nfa) {
|
void printNFA(const NFA& nfa) {
|
||||||
cout << "Start state: " << nfa.startState->id << endl;
|
cout << "Start state: " << nfa.startState->id << endl;
|
||||||
cout << "End states: "<<endl;
|
cout << "End states: "<<endl;
|
||||||
|
|
|
||||||
|
|
@ -160,8 +160,6 @@ public:
|
||||||
// 正则表达式构建状态机
|
// 正则表达式构建状态机
|
||||||
NFA RexToNFA();
|
NFA RexToNFA();
|
||||||
void printNFA(const NFA& nfa);
|
void printNFA(const NFA& nfa);
|
||||||
NFA buildNFA(string filename);
|
|
||||||
NFA RexToNFA();
|
|
||||||
set<State*, StatePtrCompare> move(const set<State*, StatePtrCompare>& states, InputCharType input);
|
set<State*, StatePtrCompare> move(const set<State*, StatePtrCompare>& states, InputCharType input);
|
||||||
set<State*, StatePtrCompare> epsilonClosure(const set<State*, StatePtrCompare>& states);
|
set<State*, StatePtrCompare> epsilonClosure(const set<State*, StatePtrCompare>& states);
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue