- 1、本文档共15页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
《编译原理》课程设计-Read
《编译原理》课程设计
报告
自动机的确定化
学院(系): 电气工程学院
班 级: T423-3
学生姓名: 滕荟芸 学号 7
指导教师: 周鹏
时间: 从07 年 9月3日 到 07 年9月6日
一、课程设计目的
(1) 理解有限自动机的作用;
(2) 利用状态图和状态表表示有限自动机;
(3) 以程序实现有限自动机的运行过程。
(4)通过课程设计进一步理解高级语言在计算机中的执行过程,加深对编译原理中重点算法和编译技术的理解,提高自己的编程能力,培养好的程序设计风格。
二、课程设计要求
根据选择的课程设计题目提交一份课程设计报告,内容包括设计要求、算法描述、程序结构、主要变量说明、程序清单、设计技巧、结果分析、心得体会等。同时能够熟练地操作,能够回答系统中的各种问题,能够排除一般故障,自行解决调试中遇到的基本问题。
三、课程设计题目
编制和调试一个程序,它将用户从键盘上输入的正规式转换为以状态图和矩阵形式表示的确定有穷自动机。
(1)将正规式转换为NFA。
(2)把NFA确定化为DFA。
四、总体设计
要把正规式转化为DFA,可以直接通过相关算法转换,但是这将会使得设计过程非常复杂,所以整个程序通过下列三个步骤实现:
由正规式构造NFA;
把NFA转化为与其等价的DFA;
把DFA最小化。
五、详细设计
(1)由正规式构造NFA:使用Thompson构造法
输入:字母表Σ上的正则表达式
输出:能够接受L(r)的NFA N
方法:首先将构成r的各个元素分解,对于每一个元素,按下述规则1和规则2生成NFA。 注意:如果r中记号a出现了多次,那么对于a的每次出现都需要生成一个单独的NFA。
之后依照正规表达式r的文法规则,将生成的NFA按照下述规则3组合在一起。
规则1 对于空记号ε,生成下面的NFA。
规则2 对于Σ的字母表中的元素a,生成下面的NFA。
规则3 令正规表达式s和t的NFA分别为N(s)和N(t)。
a) 对于s|t,按照以下的方式生成NFA N(s|t)。
b) 对于st,按照以下的方式生成NFA N(st)。
c) 对于s*,按照以下的方式生成NFA N(s*)。
d) 对于(s),使用s本身的NFA N(s)。将NFA转化为DFA
输入 NFA N
输出 能够接受与N相同语言的DFA D
方法D构造对应的状态迁移表Dtran。DFA的各个状态为NFA的状态集合,对于每一个输入符号,D模拟N中可能的状态迁移。
定义以下的操作ε-closure(s) 从NFA的状态s出发,仅通过ε迁移能够到达的NFA的状态集合 ε-closure(T) 从T中包含的某个NFA的状态s出发,仅通过ε迁移能够到达的NFA的状态集合 move(T, a) 从T中包含的某个NFA的状态s出发,通过输入符号a迁移能够到达的NFA的状态集合 令 Dstates 中仅包含ε-closure(s), 并设置状态为未标记;
while Dstates中包含未标记的状态T do
begin
???? 标记T;
???? for 各输入记号a do
???? begin
?????? U := ε-closure(move(T, a));
?????? if U不在Dstates中 then
???????? 将 U 追加到 Dstates 中,设置状态为未标记;
?????? Dtrans[T, a] := U;
???? end
end
ε-closure(T)的计算方法如下:将T中的所有状态入栈;
设置ε-closure(T)的初始值为T;
while 栈非空 do
begin
???? 从栈顶取出元素t;
???? for 从t出发以ε为边能够到达的各个状态u do
?????? if u不在ε-closure(T)中 then
?????? begin
???????? 将u追加到ε-closure(T)中;
???????? 将u入栈;
?????? end
end
2.正规式转为NFA
3.NFA转为DFA
七、数据结构
// 定义DFA的构造类
class DFA
{
public:
DFA();
~DFA();
void GetRegExp();
void InsertCatNode();
您可能关注的文档
- 5.4.4光合作用的影响因素及实践应用.ppt.ppt
- 5变形监测-安全管理网.doc
- 5教学课件理论课件树脂及其他类.ppt.ppt
- 5浙江省金华一中高三年级9月月考地理.doc.doc
- 5德布罗意波实物粒子的二象性.ppt
- 6-项目总结报告.doc.doc
- 4.植物细胞的分裂。.ppt
- 6.3商品储存管理.ppt
- 5B洪鸣佑-华德学校.ppt
- 6.论文所属学科专业类别-广西教育学院.doc
- 中国国家标准 GB/T 18233.4-2024信息技术 用户建筑群通用布缆 第4部分:住宅.pdf
- GB/T 18233.4-2024信息技术 用户建筑群通用布缆 第4部分:住宅.pdf
- GB/T 18978.210-2024人-系统交互工效学 第210部分:以人为中心的交互系统设计.pdf
- 《GB/T 18978.210-2024人-系统交互工效学 第210部分:以人为中心的交互系统设计》.pdf
- 中国国家标准 GB/T 18978.210-2024人-系统交互工效学 第210部分:以人为中心的交互系统设计.pdf
- GB/T 16649.2-2024识别卡 集成电路卡 第2部分:带触点的卡 触点的尺寸和位置.pdf
- 《GB/T 16649.2-2024识别卡 集成电路卡 第2部分:带触点的卡 触点的尺寸和位置》.pdf
- 中国国家标准 GB/T 16649.2-2024识别卡 集成电路卡 第2部分:带触点的卡 触点的尺寸和位置.pdf
- GB/T 17889.4-2024梯子 第4部分:铰链梯.pdf
- 《GB/T 17889.4-2024梯子 第4部分:铰链梯》.pdf
文档评论(0)