形式语言与自动机——第三章 上下文无关文法与下推自动机
文章目录
- 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范式
该章主要内容:
- 上下文无关文法(CFG)
- Chomsky范式和,Greibach范式
- 确定下推自动机、非确定下推自动机(Pushdown Automaton)
- 对任何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中,一个非终结符经过若干次推导可以推出空字,那么这个非终结符称为可零化的非终结符。
举例
- 从P中去掉 单独非终结符直接产生单独空字 的产生式,去掉后的产生式集记为P’
- 把第一步中去掉的产生式代入其他产生式,把新的产生式加入P’’
- 把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的改写。分别是:
- 去无用符
- 去空字
- 去单产生式
- 去左递归,这里还可以细分为直接递归和间接递归
- 去二义性
而我们今天要继续讲把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范式。
形式语言与自动机——第三章 上下文无关文法与下推自动机相关推荐
- 形式语言与自动机 第5章 上下文无关文法与下推自动机
文章目录 第5章 上下文无关文法与下推自动机 CFG 的化简 无用符号 CNF 和 GNF 范式 CNF 范式 GNF 范式 PDA 与 CFG 下推自动机 CFG →\to→ PDA PDA →\t ...
- 形式语言与自动机 第6章 上下文无关语言的性质
文章目录 第6章 上下文无关语言的性质 CFL 的缩胀定理和 Ogden 定理 CFL 缩胀定理 Ogden 定理 CFL 的封闭性质和判定性质 CFL 封闭性质 CFL 判定性质 CFL 的成员资格 ...
- 【第三章 有限自动机与右线性文法】形式语言与自动机第三章个人总结复习笔记分享!(含文件、持续更新...)
目录 前言 一.总览 二.章节展示 3.1 [有限自动机] 3.2 [不确定的有限自动机] 3.3 [DFA和NFA的等效] 3.4 [有ε转换的不确定的有限自动机] 3.5 [正则集与正则式] 3. ...
- 形式语言与自动机 Part.5 上下文无关语言与下推自动机(PDA)
课程名:形式语言与自动机 作者:Lupinus_Linn 许可证:CC-BY-NC-SA 3.0 创作共用-署名-非商业性-相同方式共享 署名(英语:Attribution,BY):您(用户)可以复制 ...
- 计算理论——正则语言,上下文无关文法,图灵机,可判定性,可规约性
目录 第一章 正则语言 状态图 自动机的形式化定义 非确定性 正则表达式 泵引理 使用泵引理证明某个语言非正则的方法 第二章 上下文无关文法 上下文无关文法概述 1.上下文无关文法形式化定义 2.上下 ...
- 【计算理论】计算理论总结 ( 上下文无关文法 CFG 转为下推自动机 PDA 示例 2 ) ★★
文章目录 一.上下文无关文法 CFG 转为下推自动机 PDA 流程 二.上下文无关文法 CFG 转为下推自动机 PDA 示例 2 参考博客 : [计算理论]上下文无关语法 ( 语法组成 | 规则 | ...
- 【计算理论】计算理论总结 ( 上下文无关文法 CFG 转为下推自动机 PDA 示例 1 ) ★★
文章目录 一.上下文无关文法 CFG 转为下推自动机 PDA 流程 二.上下文无关文法 CFG 转为下推自动机 PDA 示例 1 参考博客 : [计算理论]上下文无关语法 ( 语法组成 | 规则 | ...
- 《编译原理》-3.上下文无关文法及分析
上下文无关文法及分析 3.1 分析过程 3.2 上下文无关文法 3.2.1 与正则表达式的比较 3.2.2 上下文无关文法规则的说明 3.2.3 推导及由文法定义的语言 3.3 分析树与抽象语法树 3 ...
- 【计算理论】计算理论总结 ( 下推自动机计算过程 | 上下文无关文法 CFG 转为下推自动机 PDA ) ★★
文章目录 一.下推自动机计算过程 二.上下文无关文法 CFG 转为下推自动机 PDA 流程 参考博客 : [计算理论]上下文无关语法 ( 语法组成 | 规则 | 语法 | 语法示例 | 约定的简写形式 ...
最新文章
- 海量数据处理_国家重点研发计划“面向异构体系结构的高性能分布式数据处理技术与系统”简介...
- CentOS 5.4 下配置FTP服务器 [转帖]
- 鸟哥的Linux私房菜(基础篇)- 第二十六章、Linux 核心编译与管理
- LiveVideoStackCon深圳-服务端的任务越来越重
- c语言中,x-y,'105',ab,7f8那个是正确的,C语言程序设计_第三章 数据.ppt
- context-param和init-param的区别
- WPF 基础控件之 DatePicker 样式
- 数码管显示1到8c语言,单片机控制八只数码管滚动显示1~8 附PROTEUS软件仿真图
- 使用 idea 创建第一个 springboot 项目
- Redis高并发5-redis数据持久化之企业应用
- mysql详细教程大全
- Eps总结(1)——Eps入门级基本操作:新建工程、加载数据、新建对象、输入输出对象、基本操作
- 基于“点云智绘”与无人机激光雷达点云的土地整理解决方案及案例分享
- Python Web开发的完整指南
- DigiCert EV证书怎么样 DigiCert EV证书优势分析
- 用计算机表白我不喜欢你了,绝对看不懂的表白公式(用古文暗示我喜欢你的方式)...
- 2021年R2移动式压力容器充装报名考试及R2移动式压力容器充装操作证考试
- 在别人的句子里出现曙光
- 老大说不要在项目中使用存储过程
- 192.168.8.1手机登陆_192.168.1.101登陆页面手机进入 即可登陆
热门文章
- 2022-2028年中国智慧社区建设行业市场专项调研及投资前景研究报告
- nss版本 linux,在CentOS系统中VSCode无法启动原来是NSS版本过低
- 南华大学计算机学院足球队,南华大学“新生杯”足球赛圆满落幕
- SysML实践指南第二版(中文翻译:刘亚龙)第四章 汽车案例
- 计算机科技英语一千字作文,关于科技的英语作文3篇
- 移动安全学习笔记——组件安全之ContentProvider组件漏洞挖掘
- 21届毕业生大四实习的生活
- 手写实现一个本地缓存
- URLConnection HttpURLConnection 网络请求
- 三年前端开发面试经验加感悟(干货分享)