资源简介
编译原理课的大作业 包含三个小实验 在一个cpp文件里
正则表达式转换为nfa nfa转换为dfa dfa最小化
个人原创代码
代码片段和文件信息
#include
using namespace std;
#include
#include
#include
#include
#include
class NFA_Node;
class Trans
{
public:
char incept;
NFA_Node* des;
Trans(char inceptNFA_Node* des)
{
this->incept=incept;
this->des=des;
}
};
class NFA_Node
{
public:
int stateID;
vector t;
bool visit;
NFA_Node(int stateID)
{
visit=false;
this->stateID=stateID;
}
void AddTrans(Trans* tt)
{
t.push_back(tt);
}
};
class NFA
{
public:
NFA_Node* start;
NFA_Node* end;
NFA(){}
NFA(int SIDchar c)
{
NFA_Node* s1=new NFA_Node(SID);
NFA_Node* s2=new NFA_Node(SID+1);
Trans* tt=new Trans(cs2);
s1->AddTrans(tt);
start=s1;
end=s2;
}
};
class Converter
{
public:
int S_ID;
Converter(string str)
{
pretreat(str);
Houzhui(this->lamb);
S_ID=1;
}
Converter(){S_ID=1;}
void show()
{
cout<lamb< }
NFA ToNFA()
{
//stNFA.Clear();
//Operator_Stack.Clear();
NFA tempbtempb1tempb2;
char tempc1;
for(int i=0;i {
tempc1 = lamb[i];
if (isOperator(tempc1))
{
switch (tempc1)
{
case ‘|‘:
tempb1 = stNFA.top();
stNFA.pop();
tempb2 = stNFA.top();
stNFA.pop();
tempb1=Union(tempb2tempb1);
stNFA.push(tempb1);
break;
case ‘&‘:
tempb1 = stNFA.top();
stNFA.pop();
tempb2 = stNFA.top();
stNFA.pop();
tempb2=Connect(tempb1tempb2);
stNFA.push(tempb2);
break;
case ‘*‘:
tempb1 = stNFA.top();
stNFA.pop();
tempb1=Closure(tempb1);
stNFA.push(tempb1);
break;
}
}
else
{
tempb = NFA(S_IDtempc1);
S_ID+=2;
stNFA.push(tempb);
}
}
tempb = stNFA.top();
stNFA.pop();
return tempb;
}
private:
stack stNFA;
stack Operator_Stack;
string lamb;
bool isOperator(
- 上一篇:板材切割c源码
- 下一篇:操作系统文件管理系统模拟实现
相关资源
- 由NFA状态转换表到DFA状态转换表 C语言
- 编译原理虎书课后习题解答
- 东北大学课程设计—编译原理课程设
- 编译原理-简单编译器课程设计C语言源
- PL/0编译程序文本(C版本)
- 已知一个正则表达式把它转化为nfan
- 编译原理 压缩文法等价变换
- 编译原理 电梯程序
- 编译原理C++实现判断LL1文法
- 正则表达式—>NFA—>DFA—>DFA最小化
- 编译原理课程设计——目标代码生成
- 编译原理课程设计(PASCAL)
- 编译原理实验之四元式的生成源代码
- 北邮编译原理实验--词法分析
- 编译原理 PASCAL编译器
- 编译原理语法分析、词法分析源代码
- 编译原理之NULL集、first、follow集C语言
- 跑马灯实验(STM32F4开发板)
- DFA识别字符串
- 编译原理(龙书中英版)第二版 中文
- 编译原理-词语语法语义分析
- 编译原理LLLRSLR作业集锦
- 编译原理课设含词法语法设计以及实
- 编译原理 pl0编译器 c语言版
- 编译原理课程设计C语言子集
- 编译原理实验,包括词法分析、语法
- 文法分析 编译原理
- 编译原理课程设计 使用lex和yacc
- 编译原理 语义分析及中间代码生成
- 正则表达式转换为NFA程序代码
评论
共有 条评论