编译原理(正规式、有限自动机)
正规文法(3型文法)
文法是编译原理的基础,是描述一门程序设计语言和实现其编译器的方法(文法是用于描述语言的语法结构的形式规则)。由正规文法(3型文法)产生的语言称为正规集。 之所以用“正规”文法命名,是因为这种语言的结构可以用正规式来描述。而正规式是一种表示正规集的工具,是描述程序语言单词的表达式。
如果我们有两个字符a、b,那么有以下几种常用正规式写法。
1、正规式a,表示单一字符a,对应的正规集{a}。
2、正规式a|b,表示单一字符a或者b,对应有2个元素的正规集{a,b}。
3、正规式ab,表示由两个字符ab的元素,对应只有1个元素的正规集{ab}。
4、正规式ab(a|b),ab是确定的部分,然后再添加a或b,对应正规集{aba,abb}。
5、正规式a*,*表示任意个,对应正规集{Φ,a,aa,aaa,...}。
6、正规式(a|b)*,可以表示任意由a、b组成的串的集合,对应正规集{Φ,a,b,ab,aa,bb...}。
有限自动机
概念:有限自动机亦称时序机,有限离散数字系统的抽象数学模型。一个有限自动机M由五元组(X,Y,S,δ,λ)给定,其中X,Y和S都是非空有限集,分别称为M的输入集、输出集和状态集;δ是笛卡儿积集合S×X到S的映射,称为M的下一状态函数;λ是S×X到Y的单值映射,称为M的输出函数。
当δ是单值映射时,称M为确定型有限自动机(DFA);当δ是多值映射时,称M为不确定型有限自动机(NFA)。
他们之间的区别:
确定的有限自动机(DFA):开始状态是唯一
一个输入对应一个状态转换
不确定的有限自动机(NFA):开始状态是一个状态集合
一个输入对应多个状态转换(状态集)
有向弧的标记上可以为空
有限自动机的作用:
1、作为序列转换器,将输入序列变换为输出序列;
2、作为序列识别器,识别输入的序列是否具有某种性质;
3、作为序列产生器,产生具有所要求性质的序列 。
有限自动机作为序列识别器时,只能从有限自动机的起始位开始运行,到结束位停下。在结束位停下后,就不能继续输入了。
编译原理(正规式、有限自动机)相关推荐
- 编译原理——正规式转DFA算法概述
一.概念概述 给定一个单词,判断该单词是否满足我们给定的单词描述规则,需要用到编译原理中词法分析的相关知识,其中涉及到的两个很重要的概念就是正规式(Regular Expression)和有穷自动机( ...
- 编译原理——正规式、NFA转换构造DFA、DFA的化简
一.DFA和NFA的区别 NFA:非确定有限自动机 DFA:确定有限自动机 NFA在同一状态,可以有多条出边,DFA在同一状态,只能有一条出边: NFA的初态可以具有多个,DFA的初态是唯一的: 比如 ...
- 编译原理 —— 正规式、正规集和正则定义
正规式的定义和运算定律 正规式和正则表达式都是通过一定的语法规则来描述文法,但不是同一个概念. 正规式是一种用来描述正则语言的更紧凑的表示方法 正规式可以由较小的正规式按照特定规则递归地构建.每个正规 ...
- 编译原理——非确定有限自动机(三)
非确定有限自动机 一.非确定有限自动机的定义(NFA) NFA和DFA的区别: 接收的字符可以是空(即当前状态可以接收一个null字符然后转移到另一个状态):一个状态接收一个字符之后可以转换到多个状态 ...
- 【编译原理】确定有限自动机与非确定有限自动机
- 编译原理和离散数学 考研
离散数学 四色定理的内容?解决方法? 四色定理又称四色猜想.四色问题,是世界三大数学猜想之一.四色定理是一个著名数学定理,通俗称:每个平面地图都可以只用四种颜色来染色,而且没有两个邻接区域颜色相同./ ...
- [编译原理]-----第二章 语言及其文法
文章目录 @[toc] 1. 基本概念 (1). 字母表 (2). 符号表上的运算 1). 字母表的乘积 2). 字母表上的幂运算 3). 字母表的正闭包 4). 字母表的闭包 (3). 串 (4). ...
- 编译原理_正规集和正规式_有限自动机
** 正规集和正规式 ** 也就是说程序设计语言的合法单词是 正规集,而正规式可以用来表示正规集 正规集是集合 正规式的等价可以转换为集合的等价来证明 将每一类的单词符号写成一个正规式,通过或运算将这 ...
- 编译原理:奇数个0和奇数个1的正规式求解
编译原理第三版词法分析:P64-8-3 奇数个0或1,一看好像很难下手.我们从简单的做起,一步一步分析. 首先构造奇数个0,一个0时直接就是正规式:0 然后是3,5,7--个,我们需要每次增加两个0, ...
最新文章
- apache的prefork和workder模式
- 机器学习笔记:非负矩阵分解问题 NMF
- linux关闭时间戳是否有影响,linux – 如何让sec正确忽略时间戳
- SSM整合支付宝支付功能
- Qt之QThread用法
- 用MATLAB玩转机器人--第五章 机器人的数学建模
- 仿Drinkspiration App的menu
- Windows Phone
- (45)Verilog HDL 秒灯电路设计
- mysql 联合索引的命中规则_可能是全网最好的MySQL重要知识点/面试题总结
- 医院科室管理系统(IDEA开发)
- 数的大家庭——虚数和复数的由来
- 弘辽科技:淘宝直通车显示排查下架是什么?还能推广吗?
- Android连接WiFi再探索
- 【工作感悟】java初始化数组长度
- OpenCV实现目标跟踪
- 如何在HomePod上更改Siri语音和口音?
- 人眼识别与机器识别的联系_机器可以识别笑话吗
- predis操作redis方法大全
- popupwindow 底部弹出+背景半透明