原文:编译原理之正则表达式转NFA

本文转载自http: chriszz.sinaapp.com p 输入一个正则表达式,输出一个NFA。 我的做法:输入一个字符串表示正则,输出则是把输出到一个.dot文件中并将dot文件编译成pdf,fedora需要sudo yum install dot,然后evince XXX.pdf就可以查看生成的NFA了。 具体算法是按照龙书上的Tompson算法来的。 废话不多说,放码过来: Autho ...

2014-02-04 23:30 0 5038 推荐指数:

查看详情

正则表达式NFA

最近一直在忙着写大作业,考试复习,复习算法的时候写了一些随笔,现在忙起来都落下了博客,这里有一个VC++写的大作业,主要是正则表达式NFA并显示。内容如下。 数据结构描述 介绍一下NFA在表示的结构设计,由于NFA本身是一种有向图,所以这里的存储结构设计和邻接表相似,图中的每个节点 ...

Mon Jan 07 00:43:00 CST 2013 3 16442
编译原理:深入理解正则表达式NFA、DFA状态机

正则表达式 1 基本概念 1.1 正则 正则表达式是语法,正则语言是语义 def(正则表达式): 给定字母表 Σ, Σ 上的正则表达式由且仅由以下规则定义: ϵ 是正则表达式; ∀a ∈ Σ, a 是正则表达式; 如果 r 是正则表达式, 则 (r ...

Sat Jan 16 07:18:00 CST 2021 0 834
基于ε-NFA正则表达式引擎

正则表达式几乎每个程序员都会用到,对于这么常见的一个语言,有没有想过怎么去实现一个呢?乍一想,也许觉得困难,实际上实现一个正则表达式的引擎并没有想像中的复杂,《编译原理》一书中有一章专门讲解了怎么基于状态机来构建基本的正则表达式引擎,它讲这个初衷是为词法分析服务,不过书里的东西相对偏理论了些,实现 ...

Sun May 18 04:03:00 CST 2014 0 7463
正则表达式NFA:Thompson构造法

通过Thompson构造法对 a(b|c)* 进行构造 1.将RE中每个字符构建成简单的NFA 2.按照RE优先级顺序对简单的NFA集合应用选择、连接、闭包等转换 *红色表示选择所增加的状态和转移 *绿色表示连接所增加的状态和转移 *蓝色表示闭包所增加的状态 ...

Wed Aug 10 07:47:00 CST 2016 0 1492
正则表达式NFA 到 DFA 到最简 DFA (一)

正则表达式NFA 到 DFA 到最简 DFA (一) (博客园这个 markdown 编辑器竟然不支持 LaTeX……无语) 发现了启用数学公式的选项……错怪博客园了…… RE → NFA (Thompson 算法) 这一步是基于对正则表达式的结构做归纳:对基本的 RE 直接构造 ...

Tue Aug 27 05:04:00 CST 2019 0 1327
正则表达式NFA 到 DFA 到最简 DFA (二)

正则表达式NFA 到 DFA 到最简 DFA (二) NFA $ \rightarrow $ DFA (子集构造法) 这里我们用一个例子来解释。 如上图所示,这是上一篇文章中的正则表达式化成的 NFA,这里拿来接着用。 我们首先看开始状态 n0。n0 在接收了一个字符 a 之后 ...

Tue Aug 27 18:16:00 CST 2019 0 1097
正则表达式-NFA-DFA-化简DFA

  原本我也是学习如何将正则表达式一步步化到DFA,搜索发现很多不是死板的定义,就是跨度太大,所以我决定用一道例题,看看它是如何转化的,本次以正则表达式:(a|b)*(aa|bb)(a|b)* 为例。   我看到和多人会介绍将正则表达式转化为NFA的规则,为了便于理解我也选择简单说一下 ...

Wed Jan 05 22:40:00 CST 2022 0 1923
 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM