本文转载自http://chriszz.sinaapp.com/?p=257 输入一个正则表达式,输出一个NFA。 我的做法:输入一个字符串表示正则,输出则是把输出到一个.dot文件中并将dot文件编译成pdf,fedora需要sudo yum install dot,然后evince ...
最近一直在忙着写大作业,考试复习,复习算法的时候写了一些随笔,现在忙起来都落下了博客,这里有一个VC 写的大作业,主要是正则表达式转NFA并显示。内容如下。 数据结构描述 介绍一下NFA在表示的结构设计,由于NFA本身是一种有向图,所以这里的存储结构设计和邻接表相似,图中的每个节点后面是一些与其连接的节点的值,具体设计如图 . 。 图 . a Graph由若干个GraphLine组成,其中sta ...
2013-01-06 16:43 3 16442 推荐指数:
本文转载自http://chriszz.sinaapp.com/?p=257 输入一个正则表达式,输出一个NFA。 我的做法:输入一个字符串表示正则,输出则是把输出到一个.dot文件中并将dot文件编译成pdf,fedora需要sudo yum install dot,然后evince ...
正则表达式几乎每个程序员都会用到,对于这么常见的一个语言,有没有想过怎么去实现一个呢?乍一想,也许觉得困难,实际上实现一个正则表达式的引擎并没有想像中的复杂,《编译原理》一书中有一章专门讲解了怎么基于状态机来构建基本的正则表达式引擎,它讲这个初衷是为词法分析服务,不过书里的东西相对偏理论了些,实现 ...
通过Thompson构造法对 a(b|c)* 进行构造 1.将RE中每个字符构建成简单的NFA 2.按照RE优先级顺序对简单的NFA集合应用选择、连接、闭包等转换 *红色表示选择所增加的状态和转移 *绿色表示连接所增加的状态和转移 *蓝色表示闭包所增加的状态 ...
从正则表达式到 NFA 到 DFA 到最简 DFA (一) (博客园这个 markdown 编辑器竟然不支持 LaTeX……无语) 发现了启用数学公式的选项……错怪博客园了…… RE → NFA (Thompson 算法) 这一步是基于对正则表达式的结构做归纳:对基本的 RE 直接构造 ...
从正则表达式到 NFA 到 DFA 到最简 DFA (二) NFA $ \rightarrow $ DFA (子集构造法) 这里我们用一个例子来解释。 如上图所示,这是上一篇文章中的正则表达式化成的 NFA,这里拿来接着用。 我们首先看开始状态 n0。n0 在接收了一个字符 a 之后 ...
原本我也是学习如何将正则表达式一步步化到DFA,搜索发现很多不是死板的定义,就是跨度太大,所以我决定用一道例题,看看它是如何转化的,本次以正则表达式:(a|b)*(aa|bb)(a|b)* 为例。 我看到和多人会介绍将正则表达式转化为NFA的规则,为了便于理解我也选择简单说一下 ...
http://blog.sina.com.cn/s/blog_53f29119010009uf.html 正则表达式这个词上大学的时候就听同寝室的一个家伙常念叨——那家伙当然很厉害啦,现在已经发洋财去了——直到昨天又遇到,想起还有这么一回事。刚刚看的时候以为一点点内容一个上午就搞掂了,看了 ...
http://www.codeceo.com/article/you-should-learn-regex.html Regular Expressions (Regex):正则表达式,软件工程中最为强大,且广泛适用,令人信服的技术之一。从验证电子邮件地址到执行复杂的代码重构器,正则表达式的用途 ...