实验一(二) DFA识别字符串
来源:互联网 发布:淘宝客服骂人不带脏字 编辑:程序博客网 时间:2024/05/16 04:58
代码地址 链接
一、实验目的
通过本次实验,加深对DFA及其识别的语言的理解,学习对一般的DFA的表达方法与编程实现方法。
二、实验任务
编写一个C语言程序,模拟实现DFA识别字符串的过程。
三、实验内容
(1)DFA的输入;
(2)DFA的存储与读写;
(3)DFA的正确性检查;
(4)DFA的语言集列表显示;
(5)DFA的规则字符串判定;
四、内容说明:
(1)DFA的输入:
分别输入DFA的“字符集”、“状态集”、“开始状态”、“接受状态集”、“状态转换表”等内容,并保存在设定的变量中。
(2)DFA的存储与读写:
将上述DFA的五元组保存在一个文本文件中,扩展名指定为.dfa。请自行设计DFA文件的存储格式,并说明其含义。能将保存在内存变量中的DFA写入DFA文件,也能将DFA文件读入内存中。(思考:对稀疏DFA(转换表中为空的地方较多)或用“或”表达转换的DFA(如下的测试用例三),如何改进DFA转换表的表达。)
(3)DFA的正确性检查:
1检查所有集合的元素的唯一性。
2检查“开始状态”是否唯一,并是否包含在“状态集”中。
3检查“接受状态集”是否为空,并是否包含在“状态集”中。
4检查“状态转换表”是否满足DFA的要求。
5检查“状态转换表”并非填满时的处理是否得当…
(4)DFA的语言集列表显示:
输入待显示的字符串的最大长度N,输出以上定义的DFA的语言集中长度≤N的所有规则字符串。(提示:注意算法中while循环的次数)
(5)DFA的规则字符串判定:
输入(或用字符集随机生成)一个字符串,模拟DFA识别字符串的过程判定该字符串是否是规则字符串(属于DFA的语言集)。
五、测试用例
六、编程实现
1 读入文件:
第一行是”字符集”,
第二行是”状态集”、
第三行是”开始状态”,
第四行是”接受状态集”、
剩余行是”状态转换表”,0a1表示:输入字符’a’由状态0跳转到状态1。
2 测试执行
DFA(1):
测试结果:
输出文件:
DFA(2):
测试结果:
输出文件
DFA(3) 其中的'|'表示任意字符,即图中的others。
测试结果
输出文件
- 实验一(二) DFA识别字符串
- 实验一&实验二
- DFA状态机解析字符串
- 字符串匹配之DFA
- 实验一与实验二
- 实验二任务一
- 实验二-任务一
- c++实验一+二
- 词法分析☞DFA语言识别
- 编译原理 实验2 DFA的运行
- 实验二.任务一.打招呼
- 实验二—任务一
- 实验二--任务一--打招呼
- dfa
- dfa
- dfa
- dfa
- DFA
- 自己总结的USB数据结构及其描述符
- Java集合之Hashtable源码解析
- Oracle之高水位(HWM:high water mark)
- 彻底搞懂C#之Yield Return语法的作用和好处
- bable表格的应用
- 实验一(二) DFA识别字符串
- 在 CentOS7 上安装 Zookeeper-3.4.9 服务
- table制作表表格应用
- Ubuntu-Solidity环境搭建记录
- 【3分钟带你学】JS闭包
- Centos下安装nc
- webpack的安装与环境配置
- class template类模板笔记----C++学习之路
- python-Day01,基本语法