0
点赞
收藏
分享

微信扫一扫

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


前言

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

LALR分析

LALR:lookahead-LR

基本思想:

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

举例说明吧

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


从上图我们可以发现:I4和I11、I8和I10、I7和I13、I5和I12都是同心的,那么我们就可以将这些同心的项目集合并,形成如下:

注:分析表的方法同LR(1)

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

LALR分析冲突

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


注1:合并同心项集 不会产生移进- 归约冲突

注2:合并同心项集后,虽然不产生冲突,但可能会推迟错误的发现

LALR(1)的特点

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

LALR文法

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


举报

相关推荐

0 条评论