编译原理复习笔记

简答题

1.二义性文法证明

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

例子

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

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

img

语法分析树 + 短语 + 句柄

短语:每一棵子树的叶子

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

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

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

注释分析树 + 依赖图

1.正规式

image-20220531132322284

image-20220601230204192

词法分析和语法分析

image-20220531143749295

2.LL(1)分析

判断LL(1)文法:

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

image-20220531144438011

2.1消除左递归

image-20220531143807978

image-20220531145650903

2.2预测分析表

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

image-20220531145715403

2.3分析过程

预测分析表

a^#
Sa^(T)
TSNSNSN
NN->#,SN

分析过程

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

LR文法的关系

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

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

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

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

LR(0)

LR(0)定义

image-20220531145828827

1.LR(0)拓广文法

image-20220531154758367

2.识别全部活前缀的DFA

image-20220531154920145

3.判断LR(0)文法

image-20220531155049429

4.预测分析表

image-20220531155247911

SLR(1)文法

判断SLR(1)

image-20220531155658975

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)分析表

img
image-20220531164724771

求FOLLOW集

img

移进

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

规约

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

img

5.SLR(1)分析过程

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

image-20220531165338539

LR(1)

判断LR(1)

  • 无 规约-规约冲突

image-20220531171734016

1.拓广文法

image-20220531171818844

2.DFA(带向前搜索符)

image-20220601002849817

3.判断LR(1)

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

4.LR(1)预测分析表

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

image-20220601003524240

image-20220601003206045

4.分析过程

image-20220531171652610

5.分析过程

image-20220601003509461

LALR(1)

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

  • 同心(项目)集:

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

image-20220601010852408

image-20220601012704589

1.拓广文法

image-20220601014816973

2.带向前搜索符的DFA

image-20220601002849817

3.判断

  • 是LALR(1)

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

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

      image-20220601015206824

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

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

类型表达式

基本类型

image-20220601105150223

类型构造符

image-20220601105134200

例子

image-20220601105239733

DAG(有向无环图)

  • 2
    点赞
  • 31
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值