编译原理学习笔记~LALR分析法
Posted 海轰Pro
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了编译原理学习笔记~LALR分析法相关的知识,希望对你有一定的参考价值。
前言
进行完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) 文法,就可以根据该分析表进行语法分析
以上是关于编译原理学习笔记~LALR分析法的主要内容,如果未能解决你的问题,请参考以下文章