- 12
- 0
- 约6.58千字
- 约 7页
- 2016-12-14 发布于北京
- 举报
状态机的编程思想
KR习题1-23中,要求“编写一个程序,删除C语言程序中所有的注释语句。要正确处理带引号的字符串与字符常量。在C语言中,注释不允许嵌套”。
如果不考虑字符常量和字符串常量,问题确实很简单。只需要去掉//和/* */的注释。
考虑到字符常量\和字符串常量he\/*hehe*/,还有类似secure/_stdio.h的头文件以及表达式5/3中的除号/,情况就比较复杂了。?
我想,这种问题最适合用正则表达式来解析,perl之类的语言应当很好处理,问题是这里让你用C语言实现,但是C语言对正则表达式并没有显式的支持。
学过编译原理的应该知道,正则表达式对应三型文法,也就对应着一个有限状态自动机(可以用switch偏重算法来实现,或者用状态转换矩阵/表偏重数据结构来实现),
所以这里的问题其实是设计一个状态机,把输入的字符流扔进去跑就可以了。
【一个简单的状态机】
先看《KR》第一章的一个简单习题1-12:编写一个程序,以每行一个单词的形式打印其输入?
在这个题目之前,1.5.4节的单词计数示例中,其实KR已经展示了一个非常简单的状态机。但没有提到这种编程思想。
当然这个题目也可以状态机的思想来编程。
回到题目,我们设初始的状态state为OUT,表示当前字符不在单词中(不是单词的组成字符),如果当前字符在单词中(属于单词的一部分),则state设为IN。
显然字符只能处于
您可能关注的文档
- 2014特种设备安装改造维修许可申请书填写说明 .doc
- 2014特种设备安装改造维修许可申请书示本.doc
- 2014特种设备安装许可申请书.doc
- 2014特种设备岗位职责及相关应急预案.doc
- 2014特种设备应急工作总结.doc
- 2014特种设备应急预案管理制度.doc
- 2014特种设备开工告知.doc
- 2014特种设备报告天车.doc
- 2014特种设备报检申请.doc
- 2014特种设备操作人员管理实施细则.doc
- 落叶松基因挖掘与杂种优势:从分子机制到林业应用的深度解析.docx
- 黑龙江省村民自治中协商民主建设:实践、问题与路径探索.docx
- 高校信息集成系统评价模型研究.docx
- 基于动力学仿真的森林消防车悬架系统性能优化与设计研究.docx
- 智慧标识网络资源感知机制:设计、实现与创新应用.docx
- 基于转录组测序解析鼓槌石斛花色花香形成的分子调控密码.docx
- 中国井冈山干部学院干部教育培训模式研究.docx
- 电针调节痛负性情绪:基于大鼠杏仁核突触可塑性与蛋白表达的机制探究.docx
- 论行政事实行为及其法律救济:基于理论与实践的双重审视.docx
- 阴阳离子型超分子化合物与MOF化合物的电学性能研究:介电态转换与磁电效应.docx
原创力文档

文档评论(0)