编译原理-词法分析03-DFA
0.术语
DFA
Deterministic finite automation,确定性有穷自动机。一般用于翻译正则表达式。
状态state
DFA中的圆圈,表示模式在识别过程中的位置。
转换transition
DFA中的箭头,该转换依赖于箭头上的字符。
初始状态start state
DFA中识别过程的开始,表示“不来自任何地方”。
接收状态accepting state
DFA中识别过程的结束,表示一个匹配,用双圆圈表示。
确定性的deterministic
下一个状态由当前状态和当前输入的字符唯一给出的自动机。即T(Sn,c) = Sn+1,而非T(Sn,c) = {Sn+1,Sn+i}具有多个。
出错转换error transition
非DFA中的一个正确的匹配,可以理解为补偿状态。一般用于先行回溯分析中。
1. 定义
DFA(确定性有穷自动机)M由字母表∑,状态集合S,转换函数T:Sx∑→S、初始状态_s0_∈S以及接受状态的集合A⊂S组成。由M接受的且写作L(M)被定义为字符c1c2...cn串的集合,其中每个ci∈∑,存在状态s1=T(s0,c1),s1=T(s1,c2),...,sn=T(sn-1,cn),其中sn是A(即一个接受状态)的一个元素。
S:state
A:accepting
M:machine
T:transition
Sx∑:笛卡尔乘积
2. number的DFA
编译原理-词法分析03-DFA的更多相关文章
- 编译原理-词法分析05-正则表达式到DFA-01
编译原理-词法分析05-正则表达式到DFA 要经历 正则表达式 --> NFA --> DFA 的过程. 0. 术语 Thompson构造Thompson Construction 利用ε ...
- 编译原理-词法分析04-NFA & 代码实现
编译原理-词法分析04-NFA & 代码实现 0.术语 NFA 非确定性有穷自动机nondeterministic finite automation. ε-转换ε-transition 是无 ...
- 编译原理-NFA构造DFA
本题摘自北邮的编译原理与技术. 首先,根据此图构造状态转换表 表中第一列第一行表示从第一个符号B通过任意个空转换能到达的节点,Ia表示由此行的状态数组({B,5,1}可以看作0状态)经过一个a可以到达 ...
- 编译原理词法分析 java简单实现
package com.csray; import java.io.BufferedReader; import java.io.File; import java.io.FileNotFoundEx ...
- Atitit.编译原理与概论
Atitit.编译原理与概论 编译原理 词法分析 Ast构建,语法分析 语意分析 6 数据结构 1. ▪ 记号 2. ▪ 语法树 3. ▪ 符号表 4. ▪ 常数表 5. ▪ 中间代码 1. ▪ 临 ...
- 跟vczh看实例学编译原理——二:实现Tinymoe的词法分析
文章中引用的代码均来自https://github.com/vczh/tinymoe. 实现Tinymoe的第一步自然是一个词法分析器.词法分析其所作的事情很简单,就是把一份代码分割成若干个tok ...
- 正则表达式引擎的构建——基于编译原理DFA(龙书第三章)——3 计算4个函数
整个引擎代码在github上,地址为:https://github.com/sun2043430/RegularExpression_Engine.git nullable, firstpos, la ...
- 《编译原理》构造与正规式 (0|1)*01 等价的 DFA - 例题解析
<编译原理>构造与正规式 (0|1)*01 等价的 DFA - 例题解析 解题步骤: NFA 状态转换图 子集法 DFA 的状态转换矩阵 DFA 的状态转图 解: 已给正规式:(0|1)* ...
- Java 实现《编译原理》简单词法分析功能 - 程序解析
Java 实现<编译原理>简单词法分析功能 - 程序解析 简易词法分析功能 要求及功能 (1)读取一个 txt 程序文件(最后的 # 作为结束标志,不可省去) { int a, b; a ...
随机推荐
- C#对文件/目录的操作:Path、File、Directory、FileStream、StreamReader、StreamWriter等类的浅析
以下类的命名空间都是:System.I/0; 一.Path:主要对文件路径的操作! 常用方法: String path=@"C:\a\b\c\123.txt"; 1-1.Path. ...
- centos ADSL 拨号上网设置
下面主要介绍一下,在CentOS命令行环境下如何配置 ADSL 联网: 1.确保安装了网卡并能正常运行,使用命令查看一下网卡状态: [root@localhost simon]# /sbin/ifco ...
- CFBundleVersion与CFBundleShortVersionString,上架注意事项
CFBundleVersion,标识(发布或未发布)的内部版本号.这是一个单调增加的字符串,包括一个或多个时期分隔的整数. CFBundleShortVersionString 标识应用程序的发布版 ...
- thinkphp分页
thinkphp默认分页 html代码 <div class="f_r"> {$page} </div> 一:最简单的分页 $m = M('stock_lo ...
- ecshop 多表删除
$sql = 'DELETE O, G FROM ' . $GLOBALS['ecs']->table('delivery_order') . ' AS O, ' . $GLOBALS['ecs ...
- Androidstudio报错UnsupportedClassVersionError
报错信息 Error:java.lang.UnsupportedClassVersionError: com/android/dx/command/Main : Unsupported major.m ...
- nodejs开发 express路由与中间件
路由 通常HTTP URL的格式是这样的: http://host[:port][path] http表示协议. host表示主机. port为端口,可选字段,不提供时默认为80. path指定请求资 ...
- 基于iSCSI的SQL Server 2012群集测试(一)--SQL群集安装
一.测试需求介绍与准备 公司计划服务器迁移过程计划同时上线SQL Server2012,引入SQL Server2012群集提高高可用性,需要对SQL Server2012群集技术进行研究.测试,确保 ...
- NOSDK--项目历程
nosdk是一个基于cocos2d-x的sdk自动打包及统一接入框架,项目地址:https://github.com/nottvlike/nosdk.git. --更新(2015.07.15) 添加u ...
- js中解决函数中使用外部函数局部变量的问题(闭包问题)
如果要取得外部for循环中i的值则必须使用闭包才能解决 如果不使用闭包,直接使用 变量 i 的值是无效的,因为 i 已经在函数调用之前被回收了,所以你是调用不到它的!