LR技术——LR(0)自动机的构建
LR语法分析器
特点:
1)由表格驱动
2)几乎适用所有程序设计语言
3)无回溯的移入归约技术
4)可以尽早检测到错误
项
什么是项?这里所说的项是一种状态,用来在LR语法分析中对集合进行描述。
例如产生式 A -> XYZ 会有四个项
A -> ▪XYZ
A -> X▪YZ
A -> XY▪Z
A -> XYZ▪
产生式 A -> ε 只有一个项 A -> ▪
一个规范的LR(0)项族集提供了构建确定有穷自动机的基础。称为LR(0)自动机。
LR(0)项集中的项共分为四大类:
1)归约项目:归约结束,原点在最右端。如:A -> a▪
2)接收项目:左端为 S’ 的归约项目。如:S’ -> a▪
3)待约项目:原点后为非终结符的项目。如:A -> α▪Bβ
4)移进项目:原点后为终结符的项目。如:A -> α▪aβ
LR(0)自动机
构建一个LR(0)自动机,会涉及到一个增广文法和两个函数(CLOSURE和GOTO)两个函数之前都有了解了,分别用于求闭包和移进。增广文法含义如下:如果 G 是一个以 S 为开始符号的文法,那么 G 的增广文法 G’ 就是在 G 中加上新开始符号 S‘ 和产生式 S’->S 而得到的文法。
这里以示例文法来讲解自动机的构成
E ——> E + T | T
T ——> T * F | F
F ——> ( E ) | id
先画出I0,使用增广文法,构造E’->E,然后求E的闭包得到E -> E + T、E -> T、T -> T * F、T -> F、F -> ( E )、F -> id,以上构成I0集合,然后在他们前面都加上一个点,得到
对 E 进行GOTO操作,就是把I0中所有包含有 ▪E 的项拿出来,变成 E▪,构建成为I1
对 T 进行GOTO操作,得到I2
对F进行GOTO操作,得到I3
对( 进行GOTO操作,得到I4,由于此时▪后为非终结符,故可以进行闭包操作,对F求闭包
对 id 进行GOTO操作,得到I5
此时对I0的操作全部结束,图应为这样
对I1中的E’->E进行归约操作,得到accept,注意只有开始符号才可以进行这样的操作。
对+进行GOTO操作,得到I6
之后,对I2、I3由于已经为归约项目,所以无操作)、I4、I5(由于已经为归约项目,所以无操作)都进行跟之前类似的操作,可以得到I7、I8
第二轮画完后是这样,为了便于区分,这里使用红色标记第二轮,值得注意的是I4部分很容易出现漏画的情况。
对新生成的I6、I7、I8进行处理,得到I9、I10、I11
此时自动机的图为这样:
最后对I9、I10、I11处理得到完整的自动机。
至此,LR(0)自动机构建完毕。
此时我们再对归约式分析时就可以采用这样的方法来进行分析
id * id =》 F * id =》 T * id =》 T * F =》 T =》 E
LR技术——LR(0)自动机的构建相关推荐
- 技术系列课|从0到1 构建实时音视频引擎
随着5G和AI时代的到来,在线实时互动在越来越多的场景中被使用,支撑这一功能实现的关键性技术--RTC也受到了空前的关注.本节技术系列课,来自网易云信的讲师将以做菜的过程为比喻,深入浅出地讲述如何从0 ...
- 推荐书籍:WebRTC技术详解 从0到1构建多人视频会议系统
WebRTC技术应用领域: 5G商用.在线教育.视频会议.在线医疗.直播短视频 为什么学习WebRTC这么难? NO.1 中文技术规范少 NO.2 从业人员少,专业技术性强 NO.3 技术覆盖面广,难 ...
- 从0到1构建数据科学竞赛知识体系,有夕,鱼佬,茂霖等竞赛大咖将特邀分享...
从0到1构建数据科学竞赛知识体系 这是怎样的数据竞赛知识体系 为了帮助更多竞赛选手入门进阶比赛,通过数据竞赛提升理论实践能力和团队协作能力.DataFountain 和 Datawhale 联合邀请了 ...
- 从0到1构建大数据生态系列1:数据蛮荒中的拓荒之举
缘起 我们都知道,当前大数据的需求基本属于遍地开花.无论是帝都.魔都,还是广州.深圳,亦或是全国其他各地,都在搞大数据:不管是不到百人的微小公司,还是几百上千人的中型公司,亦或是上万的大型公司,都在需 ...
- 企业如何从 0 到 1 构建整套全链路追踪体系
简介:本文将分享 ARMS 在全链路追踪领域的最佳实践,分享主要分为四部分.首先,是对分布式链路追踪的整体简介.其次,是对 ARMS 在分布式链路追踪领域的核心能力进行介绍.然后,介绍如何从 0 到 ...
- 73页PPT,教你从0到1构建用户画像系统(附下载)
导读:用户画像就是给用户打标签,那么有哪些标签类型?用户画像的开发包括哪些阶段?每个阶段有哪些输出?用户画像系统有哪些数据结构?--你将在本文分享的PPT中找到这些问题的答案,这份干货将带你全面了解用 ...
- 从0到1构建支撑企业自动化运维体系
关注我们获得更多内容 精彩预告:第八届数据技术嘉年华大会将于2018年11月16日~17日在北京市朝阳区东三环中路61号富力万丽酒店盛大开启.本次大会邀请互联网领先企业的数据库专家,国产数据库的领军人 ...
- 【干货】如何从0到1构建用户画像系统.pdf(附76页pdf下载链接)
随着数字化浪潮的到来,用户画像系统也被提及的越来越多,在整个精细化运营过程中,用户体画像体系的搭建起着不可或缺的作用. 今天给大家分享一份干货文档<如何从0到1构建用户画像系统.pdf>, ...
- 一块链习公开课:从 0 到 1 构建去中心化应用 | ArcBlock 预告
2019 年 6 月 16 日 上午 10 点,ArcBlock 区块基石研发副总裁陈天将出席"一块链习"主办的第 30 期<区块链技术公开课 100 讲>,探讨分享今 ...
最新文章
- 语言输出换行符号是什么_世界上最难的5种编程语言
- c 连接oracle的参数,[20210203]19c登录连接改变一些参数.txt
- java异常——捕获异常+再次抛出异常与异常链
- 160个Crackme034拆解KeyFile验证升级版
- php中$_get和$_post如何使用,怎么使用超级全局变量$_POST与$_GET
- kingcms php 排序 标签,修改PHPCMS V9列表排序,listorder、order排序功能的方法
- js变量和java变量相等,js中变量和jsp中java代码中变量互相访问解决方案
- [2020-ECCV]PIPAL-a Large-Scale Image Quality Assessment Dataset for Perceptual Image Restoration论文简析
- 力扣812.最大三角形面积
- linux看mysql日志命令_Linux日志查看之cat 命令使用介绍
- proc wifi 开启_49.Linux-wpa_cli使用之WIFI开启,扫描热点,连接热点,断开热点,WIFI关闭(49)...
- IE7 下载EXCEL注意地方
- 读《深入浅出设计模式》
- 查看磁盘文件夹大小工具WinDirStat
- VMware的XP虚拟机联网
- 理论综述与创新---结构洞的新应用
- 微信小程序 实现路线规划
- 全国2012年1月高等教育考试
- php下对港澳台身份证进行验证
- 为activity设置主题theme