• 大小: 2.34MB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2023-10-12
  • 语言: C/C++
  • 标签: 3种算法  

资源简介

正规式转换的3种算法,用C++实现的,还有NFA到DFA的转换,还有DFA的最小化

资源截图

代码片段和文件信息

#pragma warning(disable:4786)
#include 
#include 
#include 
#include
using namespace std;

#include “REManage.h“

void waitForInput()
{
cout< cout<<“输入完毕后,请按任意键开始处理...“;
cout< getch();

HWND note=FindWindow(“notepad“NULL);
::SendMessage(noteWM_CLOSE00);
}

void ReadRE(string& re)
{
ifstream in(“RE.txt“);
in>>re;
}

void ReadTestString(vector& str)
{
ifstream in(“TestString.txt“);
string temp;
for(;getline(intemp)temp.size()>0;)
{
str.push_back(temp);
}
}

void ReadNFA(vector& edgeGathervector& start vector& end)
{
ifstream inNFA(“NFA.txt“);
EDGE edge;
int edgeNumstartNumendNumtemp;
edgeGather.clear();
start.clear();
end.clear();

inNFA>>edgeNum;

for(int i=0;i {
inNFA>>edge.start>>edge.input>>edge.end;
edgeGather.push_back(edge);
}
inNFA>>startNum;
for(i=0;i {
inNFA>>temp;
start.push_back(temp);
}
inNFA>>endNum;
for(i=0;i {
inNFA>>temp;
end.push_back(temp);
}
}

void ReadDFA(vector& edgeGatherint start vector& end)
{
ifstream inDFA(“DFA.txt“);
EDGE edge;
int edgeNumstartNumendNumtemp;
edgeGather.clear();
end.clear();

inDFA>>edgeNum;

for(int i=0;i {
inDFA>>edge.start>>edge.input>>edge.end;
edgeGather.push_back(edge);
}

inDFA>>startNum;
inDFA>>start;

inDFA>>endNum;
for(i=0;i {
inDFA>>temp;
end.push_back(temp);
}
}

void OutTestResult(vector strvector isPass)
{
ofstream out(“TestResult.txt“);
for(int i=0;i {
out< if(isPass[i])
out<<“PASS“< else
out<<“FAILE“< }
}

void main()
{
REManage test;
ShellExecute(NULL“open““USE.txt“NULLNULLSW_SHOWNORMAL);
cout<<“说明:详见USE.txt“< cout<<“请阅读后按任意键开始...“;
getch();
HWND note=FindWindow(“notepad“NULL);
::SendMessage(noteWM_CLOSE00);

cout<
string re; //regular expression
vector stringGather; //test string gather
vector edgeGather; //edge gather for both NFA and DFA
int startDFA=0; //start state for DFA
vector  startNFA; //start state gather for NFA
vector  end; //end state gather for both NFA and DFA
vector isPass;
for(;;)
{
stringGather.clear();
edgeGather.clear();
startNFA.clear();
end.clear();
isPass.clear();

int choice=0;
cout<<“选择你的输入:“< cout<<“    1. 输入正规式“< cout<<“    2. 输入NFA“< cout<<“    3. 输入DFA“< cout<<“    4. 退出“<
cout<<“输入你的选择(1~4):“;
cin>>choice;
switch(choice)
{
case 1:
ShellExecute(NULL“open““RE.txt“NULLNULLSW_SHOWNORMAL);
waitForInput();

ReadRE(re);
test.setRE(re);
test.Process();

break;
case 2:
ShellExecute(NULL“open““NFA.txt“NULLNULLSW_SHO

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件     436214  2010-04-26 14:23  3种算法\正规式处理及自动机的转换\Debug\main.obj

     文件     568817  2010-04-26 15:15  3种算法\正规式处理及自动机的转换\Debug\REManage.obj

     文件     696467  2010-04-26 15:19  3种算法\正规式处理及自动机的转换\Debug\REtoNFA.exe

     文件    1078384  2010-04-26 15:19  3种算法\正规式处理及自动机的转换\Debug\REtoNFA.ilk

     文件    7028316  2010-04-26 14:23  3种算法\正规式处理及自动机的转换\Debug\REtoNFA.pch

     文件    1696768  2010-04-26 15:19  3种算法\正规式处理及自动机的转换\Debug\REtoNFA.pdb

     文件     214016  2010-05-02 16:17  3种算法\正规式处理及自动机的转换\Debug\vc60.idb

     文件     208896  2010-04-26 15:15  3种算法\正规式处理及自动机的转换\Debug\vc60.pdb

     文件        146  2006-04-03 17:55  3种算法\正规式处理及自动机的转换\DFA.txt

     文件       4327  2006-04-03 17:49  3种算法\正规式处理及自动机的转换\main.cpp

     文件         55  2006-03-31 22:24  3种算法\正规式处理及自动机的转换\NFA.txt

     文件         11  2010-04-26 14:50  3种算法\正规式处理及自动机的转换\RE.txt

     文件      25273  2010-05-02 16:18  3种算法\正规式处理及自动机的转换\REManage.cpp

     文件       4221  2010-05-02 16:18  3种算法\正规式处理及自动机的转换\REManage.h

     文件          0  2010-05-02 16:17  3种算法\正规式处理及自动机的转换\Result.txt

     文件       4415  2006-03-30 12:48  3种算法\正规式处理及自动机的转换\REtoNFA.dsp

     文件        537  2006-03-11 22:17  3种算法\正规式处理及自动机的转换\REtoNFA.dsw

     文件      55808  2010-04-26 15:40  3种算法\正规式处理及自动机的转换\REtoNFA.opt

     文件        248  2010-05-02 16:17  3种算法\正规式处理及自动机的转换\REtoNFA.plg

     文件         59  2010-04-26 14:45  3种算法\正规式处理及自动机的转换\TestResult.txt

     文件         31  2006-04-03 12:56  3种算法\正规式处理及自动机的转换\TestString.txt

     文件        989  2006-04-03 17:54  3种算法\正规式处理及自动机的转换\USE.txt

     目录          0  2010-05-02 16:09  3种算法\正规式处理及自动机的转换\Debug

     目录          0  2010-05-02 16:18  3种算法\正规式处理及自动机的转换

     目录          0  2010-05-02 16:08  3种算法

----------- ---------  ---------- -----  ----

             12024216                    26


评论

共有 条评论

相关资源