文章目录

  • 3.1 推导树与二义性
  • 3.2 上下文无关文法的改写
    • 3.2.1 CFG的最简化
    • 3.2.2 CFG的变换
      • 3.2.2.1 去除可零化的非终结符
      • 3.2.2.2 去除单产生式
      • 3.2.2.3 去除左递归(递归文法)
  • 3.3 chomsky范式、greibach范式
    • 3.3.1 改写为chomsky范式
    • 3.3.2 改写为greibach范式

该章主要内容:

  1. 上下文无关文法(CFG)
  2. Chomsky范式和,Greibach范式
  3. 确定下推自动机、非确定下推自动机(Pushdown Automaton)
  4. 对任何CFA都能找到一种具有特有形式 的等价CFG(Context-Free Grammar)

上下文无关文法对应的识别器是下推自动机。

确定的下推自动机对应于上下文无关语言的一个子集(大部分的程序设计语言)。

3.1 推导树与二义性

定义:Tree是CFG G=(N,T,P,S)的语法树,是一颗有序树。

  • 树根:S
  • 枝结点是非终结符
  • 叶子结点是终结符或ε
  • 枝特点A有直接子孙x1x2…xi,则A→x1x2…xi

例:G=({E},{+,*,i,(,),},P,E)
E→ E+E|E*E|(E)|i

句子:(a*a+a)

定义:CFG G=(N,T,P,S)如果存在,S ω G是有一棵叶子为ω的语法树

定义:CFG G是二义的 等价于 ω∈L(G),有两棵不同的语法树(叶子为ω)

定义:CFG G是二义的 等价于 ω∈L(G),有两T不同的最 左(右)推导

文法二义无法推出语言二义,语言二义可以推出其文法均二义

文法的二义性的举例

左边的树在展开的时候先展开运算符,右边的树在展开的时候先展开+运算符,如果运算的定义无结合律则会存在二义性。23+5=11;2*(3+5)=16

3.2 上下文无关文法的改写

我们约定俗成:大写为非终结符,小写为终结符

为了解决文法可能存在的二义性问题,我们引入上下文无关文法的改写。在不改变文法描述能力前提下改写文法满足一定要求。改写目标:将CFG改写成某种标准形式.

(1) 改写成Chomsky范式: A→ BC|a A,B,C∈N a∈T

(2) Greibach范式 A→ a阿尔法 阿尔法∈N*, a∈T

3.2.1 CFG的最简化

但是在改写之前我们必须要做一件事,就是CFG的最简化

我们要分别有用符号和无用符号。


补充:START



END
4月29日 录播 1:10:54

3.2.2 CFG的变换

到这里我们来总结一下上面的内容。我们的目标是去除文法的二义性,首先要去除无用符号,接下来要去除可零化的终结符。我们这节就来说“去除可零化的非终结符”。

3.2.2.1 去除可零化的非终结符

定义:若在CFG中,一个非终结符经过若干次推导可以推出空字,那么这个非终结符称为可零化的非终结符

举例

  1. 从P中去掉 单独非终结符直接产生单独空字 的产生式,去掉后的产生式集记为P’
  2. 把第一步中去掉的产生式代入其他产生式,把新的产生式加入P’’
  3. 把P’’ 并入 P’,再加入新的非终结符,假如为S’,再把S’推出S和S’推出空字加入P’

则最终结果是G’ = ({S, S’}, {a,b},P’,S’)

具体推导过程参加腾讯课堂录播“文法改写”第1:35:00

补充:这个办法有点生搬硬套了,一般方法参见https://www.bilibili.com/video/BV1oE4116794?p=24,9分04秒。

3.2.2.2 去除单产生式

单产生式形如 “A → B”,且AB均属于N。

当G是无空字产生式的CFG,但存在单产生式,可以利用算法2构成一个无单产生式的等效方法G1。

例子

视频“文法改造2:03:00”,

补充:参照https://www.bilibili.com/video/BV1oE4116794?p=24,9分04秒

3.2.2.3 去除左递归(递归文法)

3.3 chomsky范式、greibach范式

我们先来总结一下上面的内容,从头到尾其实都在说CFG的改写。分别是:

  1. 去无用符
  2. 去空字
  3. 去单产生式
  4. 去左递归,这里还可以细分为直接递归和间接递归
  5. 去二义性

而我们今天要继续讲把CFG转化为C范式或G范式。

3.3.1 改写为chomsky范式


补充:

3.3.2 改写为greibach范式

定义:

由于在改写为G范式之前还要再消一次左递归,详情见视频G范式34min46s




正文

方法一:直接转法
从CFG直接转成G范式
参见https://www.bilibili.com/video/BV1oE4116794?p=25,视频最后一个例题。

方法一:两步转法
我们先从CFG改写为C范式,再有C范式改写为G范式。

形式语言与自动机——第三章 上下文无关文法与下推自动机相关推荐

  1. 形式语言与自动机 第5章 上下文无关文法与下推自动机

    文章目录 第5章 上下文无关文法与下推自动机 CFG 的化简 无用符号 CNF 和 GNF 范式 CNF 范式 GNF 范式 PDA 与 CFG 下推自动机 CFG →\to→ PDA PDA →\t ...

  2. 形式语言与自动机 第6章 上下文无关语言的性质

    文章目录 第6章 上下文无关语言的性质 CFL 的缩胀定理和 Ogden 定理 CFL 缩胀定理 Ogden 定理 CFL 的封闭性质和判定性质 CFL 封闭性质 CFL 判定性质 CFL 的成员资格 ...

  3. 【第三章 有限自动机与右线性文法】形式语言与自动机第三章个人总结复习笔记分享!(含文件、持续更新...)

    目录 前言 一.总览 二.章节展示 3.1 [有限自动机] 3.2 [不确定的有限自动机] 3.3 [DFA和NFA的等效] 3.4 [有ε转换的不确定的有限自动机] 3.5 [正则集与正则式] 3. ...

  4. 形式语言与自动机 Part.5 上下文无关语言与下推自动机(PDA)

    课程名:形式语言与自动机 作者:Lupinus_Linn 许可证:CC-BY-NC-SA 3.0 创作共用-署名-非商业性-相同方式共享 署名(英语:Attribution,BY):您(用户)可以复制 ...

  5. 计算理论——正则语言,上下文无关文法,图灵机,可判定性,可规约性

    目录 第一章 正则语言 状态图 自动机的形式化定义 非确定性 正则表达式 泵引理 使用泵引理证明某个语言非正则的方法 第二章 上下文无关文法 上下文无关文法概述 1.上下文无关文法形式化定义 2.上下 ...

  6. 【计算理论】计算理论总结 ( 上下文无关文法 CFG 转为下推自动机 PDA 示例 2 ) ★★

    文章目录 一.上下文无关文法 CFG 转为下推自动机 PDA 流程 二.上下文无关文法 CFG 转为下推自动机 PDA 示例 2 参考博客 : [计算理论]上下文无关语法 ( 语法组成 | 规则 | ...

  7. 【计算理论】计算理论总结 ( 上下文无关文法 CFG 转为下推自动机 PDA 示例 1 ) ★★

    文章目录 一.上下文无关文法 CFG 转为下推自动机 PDA 流程 二.上下文无关文法 CFG 转为下推自动机 PDA 示例 1 参考博客 : [计算理论]上下文无关语法 ( 语法组成 | 规则 | ...

  8. 《编译原理》-3.上下文无关文法及分析

    上下文无关文法及分析 3.1 分析过程 3.2 上下文无关文法 3.2.1 与正则表达式的比较 3.2.2 上下文无关文法规则的说明 3.2.3 推导及由文法定义的语言 3.3 分析树与抽象语法树 3 ...

  9. 【计算理论】计算理论总结 ( 下推自动机计算过程 | 上下文无关文法 CFG 转为下推自动机 PDA ) ★★

    文章目录 一.下推自动机计算过程 二.上下文无关文法 CFG 转为下推自动机 PDA 流程 参考博客 : [计算理论]上下文无关语法 ( 语法组成 | 规则 | 语法 | 语法示例 | 约定的简写形式 ...

最新文章

  1. 海量数据处理_国家重点研发计划“面向异构体系结构的高性能分布式数据处理技术与系统”简介...
  2. CentOS 5.4 下配置FTP服务器 [转帖]
  3. 鸟哥的Linux私房菜(基础篇)- 第二十六章、Linux 核心编译与管理
  4. LiveVideoStackCon深圳-服务端的任务越来越重
  5. c语言中,x-y,'105',ab,7f8那个是正确的,C语言程序设计_第三章 数据.ppt
  6. context-param和init-param的区别
  7. WPF 基础控件之 DatePicker 样式
  8. 数码管显示1到8c语言,单片机控制八只数码管滚动显示1~8 附PROTEUS软件仿真图
  9. 使用 idea 创建第一个 springboot 项目
  10. Redis高并发5-redis数据持久化之企业应用
  11. mysql详细教程大全
  12. Eps总结(1)——Eps入门级基本操作:新建工程、加载数据、新建对象、输入输出对象、基本操作
  13. 基于“点云智绘”与无人机激光雷达点云的土地整理解决方案及案例分享
  14. Python Web开发的完整指南
  15. DigiCert EV证书怎么样 DigiCert EV证书优势分析
  16. 用计算机表白我不喜欢你了,绝对看不懂的表白公式(用古文暗示我喜欢你的方式)...
  17. 2021年R2移动式压力容器充装报名考试及R2移动式压力容器充装操作证考试
  18. 在别人的句子里出现曙光
  19. 老大说不要在项目中使用存储过程
  20. 192.168.8.1手机登陆_192.168.1.101登陆页面手机进入 即可登陆

热门文章

  1. 2022-2028年中国智慧社区建设行业市场专项调研及投资前景研究报告
  2. nss版本 linux,在CentOS系统中VSCode无法启动原来是NSS版本过低
  3. 南华大学计算机学院足球队,南华大学“新生杯”足球赛圆满落幕
  4. SysML实践指南第二版(中文翻译:刘亚龙)第四章 汽车案例
  5. 计算机科技英语一千字作文,关于科技的英语作文3篇
  6. 移动安全学习笔记——组件安全之ContentProvider组件漏洞挖掘
  7. 21届毕业生大四实习的生活
  8. 手写实现一个本地缓存
  9. URLConnection HttpURLConnection 网络请求
  10. 三年前端开发面试经验加感悟(干货分享)