编译原理复习笔记

简答题

1.二义性文法证明

  • 一个文法存在某个句子对应两棵不同的语法树,则称这个文法是二义的。也就是该句子有两个不同的最左(最右)推导。

例子

证明下列文法G(S)是二义的
S->Ac|aB
A->ab
B->bc

判断:自己定义一个句子,然后说明这个句子有两个语法树 (这里是:abc)

img

语法分析树 + 短语 + 句柄

短语:每一棵子树的叶子

直接短语:每棵直接子树的叶子

句柄:某句型的最左直接短语(即规范分析中最先被规约的字串)

素短语:至少包含一个终结符且不包含更小素短语的短语

注释分析树 + 依赖图

1.正规式

词法分析和语法分析

2.LL(1)分析

判断LL(1)文法:

  • 1.已化简且无左递归
  • 2.对于G中的每个产生式A->r1|r2|…|rm,其余候选式均满足:
    • 1.FIRST集 两两不相交
    • 2.若有候选式为其余的FIRST(ri) 交FLLOW(A)=空

2.1消除左递归

编译原理复习笔记_第1张图片

2.2预测分析表

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-BQYZrg7W-1654096433336)(https://s2.loli.net/2022/06/01/oy7rYDOG9C5zw6J.png)]

编译原理复习笔记_第2张图片

2.3分析过程

预测分析表

a ^ #
S a ^ (T)
T SN SN SN
N N-># ,SN

分析过程

  • 分析栈 和 产生式 的顺序是反的!!!
  • 分析栈 和 余留输入串 匹配时,两边都出栈

LR文法的关系

1.规约项目: A->α.

2.接收项目: S->α. (S为开始符号)

3.移进项目:A->α.xβ (x为终结符)

4.待约项目:A->α.Xβ (X为非终结符)

LR(0)

LR(0)定义


1.LR(0)拓广文法

image-20220531154758367

2.识别全部活前缀的DFA

3.判断LR(0)文法

编译原理复习笔记_第3张图片

4.预测分析表

SLR(1)文法

判断SLR(1)

1.拓广文法

image-20220531161357167

2.DFA

![image-20220531161526147](https://s2.loli.net/2022/06/01/KHWDLPy2z69OmQT.png)

3.判断冲突、是否两两不相交

  • 规约项目的FOLLOW集
  • 移进项目的 “.” 后面的第一个终结符

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-dZ1vo17z-1654097136471)(https://s2.loli.net/2022/06/01/eJlLh7v9GCTkcP8.png)]

4.SLR(1)分析表

编译原理复习笔记_第4张图片

求FOLLOW集

img

移进

然后再来看2状态大家看2状态接收一个+,2状态接收一个+是不是做移进呢
我们就要看当前所对应的Follow集Follow (E)有#有+有)那就意味着我要在对应的#+),这三列的位置来填它对应的归约,那就是要用第2条产生式进行归约所以我们在这三个位置填的是r2

规约

状态2接收一个 * 它就是什么移进了就可以转移到S7

编译原理复习笔记_第5张图片

5.SLR(1)分析过程

句子i+i *i的分析过程:

编译原理复习笔记_第6张图片

LR(1)

判断LR(1)

  • 无 规约-规约冲突

编译原理复习笔记_第7张图片

1.拓广文法

编译原理复习笔记_第8张图片

2.DFA(带向前搜索符)

编译原理复习笔记_第9张图片

3.判断LR(1)

  • 是否有规约-规约冲突—无规约-规约冲突则是LR(1)!

4.LR(1)预测分析表

  • 根据式子的向前搜索符来对应Sx 和 Rx 的位置

编译原理复习笔记_第10张图片

4.分析过程

编译原理复习笔记_第11张图片

5.分析过程

编译原理复习笔记_第12张图片

LALR(1)

在 **LR(1)**的基础上 合并同心集

  • 同心(项目)集:

    如果除展望符外,两个LR(1)项目集(整个大的集合都要相同,如:I2和I3,而不是只是项目集中的某两个式子相同)是相同的,则称这两个LR(1)项目集是同心的

编译原理复习笔记_第13张图片

image-20220601012704589

1.拓广文法

image-20220601014816973

2.带向前搜索符的DFA

编译原理复习笔记_第14张图片

3.判断

  • 是LALR(1)

    1. 没有同心集且没有冲突
    2. 合并同心集后无规约-规约冲突
  • 不是是LALR(1)

    • 合并同心集后有规约-规约冲突

      编译原理复习笔记_第15张图片

  • 同心集合并前无规约-规约冲突

    • 同一项目集中有两个规约动作向前搜索符相同才算规约-规约冲突
    • 否则就是LR(1)文法

类型表达式

基本类型

类型构造符

例子

编译原理复习笔记_第16张图片

DAG(有向无环图)

你可能感兴趣的:(编译原理,其他)