语法分析笔记(四)——LR(0) SLR LR(1) LALR

语法分析笔记

语法分析笔记(一)

语法分析笔记(三)——LR分析法

语法分析笔记(四)——LR(0) SLR LR(1) LALR

LR(0)

LR(0)项目

在这里插入图片描述

LR(0)的分析基础——增广文法

进行LR(0)分析的文法必须先转变成增广文法的形式
在这里插入图片描述

文法中的项目

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

构造LR(0)自动机

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

LR(0)分析表构造

在这里插入图片描述
在这里插入图片描述
这个形式化定义不常用(了解即可)

LR(0)分析过程中的冲突

移进——规约冲突:对于某一个状态,接受某个终极符后既可执行移进动作,也可执行规约动作
规约——规约冲突:对于某一个状态,接受某个终极符后既可执行规约动作1,也可执行规约动作2
在这里插入图片描述
在这里插入图片描述
I   2 \ _2  2中既存在移进——规约冲突(接收a),也存在规约——规约冲突
为了解决这种冲突,进一步优化LR(0)得到SLR分析

SLR

SLR相比LR(0)怎样避免冲突

在这里插入图片描述
在这里插入图片描述

SLR怎样构造分析表

在这里插入图片描述

SLR分析仍不能解决所有的冲突

在这里插入图片描述
为了继续解决冲突问题,提出了标题四种分析方法中分析能力最强的LR(1)分析法

LR(1)

为了继续进行优化,首先要找到SLR分析方法存在问题的原因

SLR分析存在问题的原因

在这里插入图片描述
也就是说,b属于follow集不一定就必须要进行规约,但是如果要进行规约,b必须属于follow集
在这里插入图片描述

LR(1)项目

在这里插入图片描述
在这里插入图片描述

LR(1)自动机

在这里插入图片描述
在这里插入图片描述

closure用来构造一个完整的状态

在这里插入图片描述

goto用来创建状态I在遇到X后应该转到的下一状态

在这里插入图片描述

LR(1)项集族就是所有状态的集合

在这里插入图片描述
在这里插入图片描述
形式化定义不常用,了解即可

LR(1)分析表构造算法

在这里插入图片描述

LALR

LALR为何被提出

因为LR(1)分析能力虽强,但它的状态太多了

LALR如何改进LR(1)

在这里插入图片描述

改进后的变化——合并同心项目集(合并同心状态)

在这里插入图片描述
在这里插入图片描述

合并同心项集

在这里插入图片描述
不会产生移进规约——冲突的原因:对于两个同心项目集中各自的移进项目来说,它们的展望符可能不同,但他们执行移进项目时所要接收的终极符a(假设为a)是确定且相同的,如果原本的LR(1)不存在移进——规约冲突,则说明两个同心项目集中所有规约项目的展望符集合不包含a,因此合并同心项集后不会造成移进——规约冲突。

LALR(1)的特点

在这里插入图片描述

二义性文法

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值