资源简介
编译原理课的大作业 包含三个小实验 在一个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源码
- 下一篇:操作系统文件管理系统模拟实现
相关资源
- 编译原理c语言编译器
- 编译原理实验-词法分析(c语言代码)
- 北邮-编译原理-词法分析
- 现代编译原理-C语言描述
- 编译原理实验报告+代码+使用说明
- 编译原理课程设计-C语言子集编译器
- 赋值语句翻译c语言实现四元式
- 编译原理用C++消除左递归
- 编译原理简易C编译器
- 实现语法分析器-编译原理
- 编译原理 LR分析器 c++代码
- 设计并实现TINYC语言的扫描程序TINYC
- LL(1)文法分析全过程(FIRST/FLLOW/S
- 编译原理 LR0项目集规范族的构造 L
- 山东大学编译原理实验源代码c++版
- NFA转DFA,并将DFA最小化
- 自定义词法规则的词法分析器
- 简单函数绘图语言的解释器
- Lex和Yacc从入门到精通.pdf
- 简易词法分析器——基于C语言
- LL(1)文法的实现-mfc-编译原理学习
- 正规式到NFA的转换
- 词法分析代码内有报告
- 编译原理LL1文法的mfc实现含消除左递
- 编译原理词法分析实验
- pl/0语言的编译器
- C++实现编译原理自动机、LL1文法、及
- 编译原理语义分析程序 c++实现
- 编译原理 课程设计 DAG 报告+源码C++版
- 编译原理课程设计----语法分析器(
评论
共有 条评论