编译原理学习笔记(十一)~LALR分析法

举报
海轰Pro 发表于 2021/08/05 23:39:06 2021/08/05
【摘要】 前言         进行完LR(1)分析后,我们会发现,存在一些同心项目【同心:如果除展望符外,两个LR(1)项目集是相同的,则称这两个LR(1)项目集是同心的】那么是否可以简化这些项目呢?是的,可以,简化后就是LALR分析。 LALR分析 LALR:lookahead-LR 基本...

前言

        进行完LR(1)分析后,我们会发现,存在一些同心项目【同心:如果除展望符外,两个LR(1)项目集是相同的,则称这两个LR(1)项目集是同心的】那么是否可以简化这些项目呢?是的,可以,简化后就是LALR分析。

LALR分析

LALR:lookahead-LR

基本思想:

  • 寻找具有相同核心的LR (1) 项集,并将这些项集合并为一个项集。 所谓项集的核心就是其第一分量的集合
  • 然后根据合并后得到的项集族构造语法分析表

举例说明吧
在这里插入图片描述
从上图我们可以发现:I4和I11、I8和I10、I7和I13、I5和I12都是同心的,那么我们就可以将这些同心的项目集合并,形成如下:
注:分析表的方法同LR(1)
在这里插入图片描述

LALR分析冲突

在这里插入图片描述
注1:合并同心项集 不会产生移进- 归约冲突
注2:合并同心项集后,虽然不产生冲突,但可能会推迟错误的发现

LALR(1)的特点

  • 形式上与LR(1)相同
  • 大小上与LR(0)/SLR相当
  • 分析能力介于SLR和LR(1)二者之间:SLR<LALR(1)<LR(1)
  • 合并后的展望符集合仍为FOLLOW集的子集

LALR文法

定义:如果分析表中没有语法分析动作冲突,给定的文法就称为LALR (1) 文法,就可以根据该分析表进行语法分析

文章来源: haihong.blog.csdn.net,作者:海轰Pro,版权归原作者所有,如需转载,请联系作者。

原文链接:haihong.blog.csdn.net/article/details/105599118

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。