貌似刚开学的时候装了个逼,和老师立了个flag说我要写个正则表达式引擎,然后学期末估计老师早就忘了这茬了,在历时3个月的懒癌发作下,终于在这学期末deadline的时候花了一个下午加晚上在没有网的房间写完了它,于是便有了这篇blog,本来想正儿八紧写篇论文,说不定毕业设计可以直接丢一篇这个走人,但第一觉得一个晚上写好的东西太low了,第二自己实在不适合写那种正经的论文,于是还是写从高中开始的一贯的乱七八糟体好了.
主要写自己写的时候遇到的一些瓶颈,例如茹何储存一个图,茹何遍历一个图,茹何表示一个集合之类基础的问题,等不再赘述.请自行查阅数据结构,C++ STL之类的相关书籍,首先介绍一些基础知识

1.DFA.NFA.正则表达式
DFA即有穷状态自动机,是一个有向图,其中每条边有有一个字母.这个图有唯一一个起始点 q0 ,有一些点是终止状态,现在有一个字符串str,当我们就从起点q0开始,根据下一个字符,在图中走到不同的点上,当整个字符串走完,我们必定停在某个点上,如果那个点是终止状态,那么我们称这个DFA接受这个字符串,反之不接受
/*************************************/
/* 形式化定义DFA:
/* DEF:DFA是一个五元组(Q,∑,δ,q0,F)
/* 其中Q是一个有穷集合,叫做状态集
/* ∑是一个有穷集合,叫做字母表
/* δ是一个映射 δ:Q × ∑ ->Q
/* q0属于Q是起始状态
/* F是Q的子集是终止状态
/*
/* 这个定义前三个定义了一个图G,别忘了图的定义G<V,E,δ> 第四个定义了一个起始状态,第五个定义了终止状态的集合,所以这个定义和上面的说法是定价的
/*
/*************************************/

NFA即非确定有穷状态自动机,简单来说,对于DFA,在每个点,不同的字符走到下一个点是确定的,而NFA则是不确定的,也就是

----------------------to be continue----------------------------------------------------------------------

reference:
[1] Michael Sipser "计算理论导引" 机械工业出版社
[2] Alfred V.aho Monica S.Lam Ravi Sethi Jeffrey D Ullman "Compilers:Pinciples,Techniques,&Tools Second Edition" 人民有点出版社影印
[3] 陈梓瀚(vczh) http://www.cppblog.com/vczh/archive/2008/05/22/50763.html
[4] Andrew W. "现代编译原理 C语言描述" 人民邮电出版社

最新文章

  1. RabbitMQ + PHP (三)案例演示
  2. uicode编码解码
  3. k8s总结(图片打开略慢请知晓)
  4. spice命令使用
  5. A/B 测试之前必须要了解的 10 件事
  6. javascript - 简单实现一个图片延迟加载的jQuery插件
  7. knockoutjs + easyui.treegrid 可编辑的自定义绑定插件
  8. &lt;转&gt;32位移植到64位 注意事项
  9. LNMP环境搭建配置memcache
  10. qemu-kvm简单使用
  11. ThinkPHP3.2 分页实现
  12. 源码生成deb包
  13. BZOJ1013 球形空间产生器sphere
  14. HL-340编译驱动
  15. Django学习之十二:Cache 缓存组件
  16. python实战案例--银行系统
  17. IT 产品 需求 痛点
  18. hdu2067 小兔的棋盘 DP/数学/卡特兰数
  19. unicorn模拟执行学习
  20. hadoop学习day2开发笔记

热门文章

  1. IOS之constraints
  2. hadoop中修改端口号
  3. 找出指定文件夹中的所有以txt结尾的文件,包括所有嵌套的子文件夹
  4. (转)MyBatis框架的学习(七)——MyBatis逆向工程自动生成代码
  5. Android(java)学习笔记140:常用的对话框
  6. Google Colab免费GPU使用教程(一)
  7. python3中bytes、hex和字符串相互转换
  8. apache shiro的工作流程分析
  9. python之道07
  10. java在线聊天项目0.3版本 制作客户端窗体,实现发送按钮和回车发送信息功能,使用ActionListener监听事件中actionPerformed方法(用内部类和匿名内部类两种方法)