From 5a11da78277af6f4b4787b324da5455315e559ee Mon Sep 17 00:00:00 2001 From: LiuYuanchi Date: Thu, 9 May 2024 16:54:24 +0800 Subject: [PATCH] =?UTF-8?q?[fix]=20=E5=88=A0=E6=8E=89=E4=B8=80=E9=83=A8?= =?UTF-8?q?=E5=88=86=E6=97=A0=E7=94=A8=E5=87=BD=E6=95=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- nfa/nfa.cpp | 45 --------------------------------------------- nfa/nfa.h | 2 -- 2 files changed, 47 deletions(-) diff --git a/nfa/nfa.cpp b/nfa/nfa.cpp index 21ac000..95bbfc3 100644 --- a/nfa/nfa.cpp +++ b/nfa/nfa.cpp @@ -89,51 +89,6 @@ NFA RexToNFA() { 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 states(stateNum); - for (int i = 0; i < stateNum; i++) { - states[i] = new State(i); - } - - State* startState = states[0]; - set 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(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(wordTypeID)); - endStates.insert(states[endStateID]); - } - - return NFA(startState, endStates, set(states.begin(), states.end())); -} - void printNFA(const NFA& nfa) { cout << "Start state: " << nfa.startState->id << endl; cout << "End states: "< move(const set& states, InputCharType input); set epsilonClosure(const set& states);