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的更多相关文章

  1. 编译原理-词法分析05-正则表达式到DFA-01

    编译原理-词法分析05-正则表达式到DFA 要经历 正则表达式 --> NFA --> DFA 的过程. 0. 术语 Thompson构造Thompson Construction 利用ε ...

  2. 编译原理-词法分析04-NFA & 代码实现

    编译原理-词法分析04-NFA & 代码实现 0.术语 NFA 非确定性有穷自动机nondeterministic finite automation. ε-转换ε-transition 是无 ...

  3. 编译原理-NFA构造DFA

    本题摘自北邮的编译原理与技术. 首先,根据此图构造状态转换表 表中第一列第一行表示从第一个符号B通过任意个空转换能到达的节点,Ia表示由此行的状态数组({B,5,1}可以看作0状态)经过一个a可以到达 ...

  4. 编译原理词法分析 java简单实现

    package com.csray; import java.io.BufferedReader; import java.io.File; import java.io.FileNotFoundEx ...

  5. Atitit.编译原理与概论

    Atitit.编译原理与概论 编译原理 词法分析 Ast构建,语法分析 语意分析 6 数据结构  1. ▪ 记号 2. ▪ 语法树 3. ▪ 符号表 4. ▪ 常数表 5. ▪ 中间代码 1. ▪ 临 ...

  6. 跟vczh看实例学编译原理——二:实现Tinymoe的词法分析

    文章中引用的代码均来自https://github.com/vczh/tinymoe.   实现Tinymoe的第一步自然是一个词法分析器.词法分析其所作的事情很简单,就是把一份代码分割成若干个tok ...

  7. 正则表达式引擎的构建——基于编译原理DFA(龙书第三章)——3 计算4个函数

    整个引擎代码在github上,地址为:https://github.com/sun2043430/RegularExpression_Engine.git nullable, firstpos, la ...

  8. 《编译原理》构造与正规式 (0|1)*01 等价的 DFA - 例题解析

    <编译原理>构造与正规式 (0|1)*01 等价的 DFA - 例题解析 解题步骤: NFA 状态转换图 子集法 DFA 的状态转换矩阵 DFA 的状态转图 解: 已给正规式:(0|1)* ...

  9. Java 实现《编译原理》简单词法分析功能 - 程序解析

    Java 实现<编译原理>简单词法分析功能 - 程序解析 简易词法分析功能 要求及功能 (1)读取一个 txt 程序文件(最后的 # 作为结束标志,不可省去) { int a, b; a ...

随机推荐

  1. PHP WAMP 文件上传 及 简单的上传预览

    ...... 使用特殊的表单类型file, 主(上传)页面: <form action="chuli.php" method="post" enctype ...

  2. Web jquery表格组件 JQGrid 的使用 - 6.准备工作 & Hello JQGrid

    系列索引 Web jquery表格组件 JQGrid 的使用 - 从入门到精通 开篇及索引 Web jquery表格组件 JQGrid 的使用 - 4.JQGrid参数.ColModel API.事件 ...

  3. git版本控制管理实践-3

    git -m 和git -a -m(-am) . 的区别? usally two steps to commit files to respository: first, git add somefi ...

  4. 前端工具之Gulp

    Gulp是一款前端自动化的工具,如果能熟练使用Gulp来进行开发一定可以节省很多的时间,也可以快速的提高工作效率. 在使用Gulp之前就是要配置好Gulp安装的环境,这是我们能使用Gulp快速开发的第 ...

  5. 什么是UIScrollView

    移动设备的屏幕大小是极其有限的,因此直接展示在用户眼前的内容也相当有限 当展示的内容较多,超出一个屏幕时,用户可通过滚动手势来查看屏幕以外的内容 普通的UIView不具备滚动功能,不适合显示过多的内容 ...

  6. UVA-11997 K Smallest Sums

    UVA - 11997 K Smallest Sums Time Limit: 1000MS   Memory Limit: Unknown   64bit IO Format: %lld & ...

  7. 摄像头视频捕捉(简单通用--通过IsampleGrabberCB实现)

    前言 DirectShow是微软公司提供的一套在Windows平台上进行流媒体处理的开发包,与DirectX开发包一起发布.DirectShow为多媒体流的捕捉和回放提供了强有力的支持.用Direct ...

  8. upload&&download

    package am.demo;  import java.io.File;  import java.io.IOException;  import java.util.Iterator;  imp ...

  9. HTML CSS SPRITE 工具

    推荐一个CSS SPRITE工具 网盘分享:http://pan.baidu.com/s/1sjx7cZV

  10. git 入门操作

    从已有的GIT仓库获取最新代码 git clone url 建立本地仓库,并提交至git-hub 生成ssh的公钥私钥对:ssh-keygen 必须把这两个文件放到当前用户目录的“.ssh”目录下才能 ...