正规文法(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、作为序列产生器,产生具有所要求性质的序列 。

有限自动机作为序列识别器时,只能从有限自动机的起始位开始运行,到结束位停下。在结束位停下后,就不能继续输入了。

编译原理(正规式、有限自动机)相关推荐

  1. 编译原理——正规式转DFA算法概述

    一.概念概述 给定一个单词,判断该单词是否满足我们给定的单词描述规则,需要用到编译原理中词法分析的相关知识,其中涉及到的两个很重要的概念就是正规式(Regular Expression)和有穷自动机( ...

  2. 编译原理——正规式、NFA转换构造DFA、DFA的化简

    一.DFA和NFA的区别 NFA:非确定有限自动机 DFA:确定有限自动机 NFA在同一状态,可以有多条出边,DFA在同一状态,只能有一条出边: NFA的初态可以具有多个,DFA的初态是唯一的: 比如 ...

  3. 编译原理 —— 正规式、正规集和正则定义

    正规式的定义和运算定律 正规式和正则表达式都是通过一定的语法规则来描述文法,但不是同一个概念. 正规式是一种用来描述正则语言的更紧凑的表示方法 正规式可以由较小的正规式按照特定规则递归地构建.每个正规 ...

  4. 编译原理——非确定有限自动机(三)

    非确定有限自动机 一.非确定有限自动机的定义(NFA) NFA和DFA的区别: 接收的字符可以是空(即当前状态可以接收一个null字符然后转移到另一个状态):一个状态接收一个字符之后可以转换到多个状态 ...

  5. 【编译原理】确定有限自动机与非确定有限自动机

     

  6. 编译原理和离散数学 考研

    离散数学 四色定理的内容?解决方法? 四色定理又称四色猜想.四色问题,是世界三大数学猜想之一.四色定理是一个著名数学定理,通俗称:每个平面地图都可以只用四种颜色来染色,而且没有两个邻接区域颜色相同./ ...

  7. [编译原理]-----第二章 语言及其文法

    文章目录 @[toc] 1. 基本概念 (1). 字母表 (2). 符号表上的运算 1). 字母表的乘积 2). 字母表上的幂运算 3). 字母表的正闭包 4). 字母表的闭包 (3). 串 (4). ...

  8. 编译原理_正规集和正规式_有限自动机

    ** 正规集和正规式 ** 也就是说程序设计语言的合法单词是 正规集,而正规式可以用来表示正规集 正规集是集合 正规式的等价可以转换为集合的等价来证明 将每一类的单词符号写成一个正规式,通过或运算将这 ...

  9. 编译原理:奇数个0和奇数个1的正规式求解

    编译原理第三版词法分析:P64-8-3 奇数个0或1,一看好像很难下手.我们从简单的做起,一步一步分析. 首先构造奇数个0,一个0时直接就是正规式:0 然后是3,5,7--个,我们需要每次增加两个0, ...

最新文章

  1. apache的prefork和workder模式
  2. 机器学习笔记:非负矩阵分解问题 NMF
  3. linux关闭时间戳是否有影响,linux – 如何让sec正确忽略时间戳
  4. SSM整合支付宝支付功能
  5. Qt之QThread用法
  6. 用MATLAB玩转机器人--第五章 机器人的数学建模
  7. 仿Drinkspiration App的menu
  8. Windows Phone
  9. (45)Verilog HDL 秒灯电路设计
  10. mysql 联合索引的命中规则_可能是全网最好的MySQL重要知识点/面试题总结
  11. 医院科室管理系统(IDEA开发)
  12. 数的大家庭——虚数和复数的由来
  13. 弘辽科技:淘宝直通车显示排查下架是什么?还能推广吗?
  14. Android连接WiFi再探索
  15. 【工作感悟】java初始化数组长度
  16. OpenCV实现目标跟踪
  17. 如何在HomePod上更改Siri语音和口音?
  18. 人眼识别与机器识别的联系_机器可以识别笑话吗
  19. predis操作redis方法大全
  20. popupwindow 底部弹出+背景半透明

热门文章

  1. js解析MarkDown语法
  2. C++中类型转换详解
  3. 惯例的2020新年愿望目标
  4. 吃货疯抢天猫618生鲜产品,菜鸟协同物流业一天发货500吨
  5. matlab氢原子杂化轨道,用matlab实现氢原子的sp杂化轨道可视化
  6. VS2019配置SFML环境保姆级教程
  7. 腾讯太狠:40亿QQ号, 给你1G内存,怎么去重?
  8. 京麦微信小程序圣诞抽奖项目总结
  9. Tak and Cards(DP,二维背包)
  10. weinre远程调试