北邮计科编译原理复习

废话

还是非常的功利啊,不考的不复习,考试嘛,赚绩点嘛,不寒碜。

大题就那么几类,看熟了应该问题就不大,没啥变化。看多了说不定直接遇到原题了。

知识点总结

第一章 编译概述

编译的步骤:

  • 分析: 词法分析、语法分析、语义分析
  • 综合: 中间代码生成、代码优化、目标代码生成

编译的前端:只和中间代码有关的部分;编译的后端:只和目标代码有关的部分。

多遍编译: 优点:减小了对主存容量的需求;结构清晰,功能独立。缺点:增加了许多重复性工作。

第二章 形式语言与自动机基础

就是那些东西,没啥要复习的。

第三章 词法分析

好像也没什么考点。

第四章 语法分析

自顶向下分析: 从树根到树叶建立分析树。

递归调用预测分析: 包含下面几步。

  1. 消除左递归;
  2. 求出FIRST集合;
  3. 对每个非终结符画出其状态转换图,得到若干张图;
  4. 从起始符号的状态转换图的起点走到终点即分析完毕。

非递归预测分析: 模型如下图所示。
在这里插入图片描述
包含下面几步:

  1. 消除左递归!(别忘了!)
  2. 求出 FIRST 集合。
  3. 求出 FOLLOW 集合。
  4. 根据 FIRST 和 FOLLOW 求出预测分析表:对于非终结符 A A A ,生成式 A → α A\to \alpha Aα,输入字符 b b b,若 b ∈ FIRST ( α ) b\in \text{FIRST}(\alpha) bFIRST(α),则 M [ A , b ] = A → α M[A, b]=A\to \alpha M[A,b]=Aα;否则若 b ∈ FOLLOW ( A ) b \in \text{FOLLOW}(A) bFOLLOW(A),则 M [ A , b ] = A → ϵ M[A, b] = A \to \epsilon M[A,b]=Aϵ
  5. 根据预测分析表进行分析。分析步骤: 若 X=a=‘$’,则匹配成功,结束;若 X=a,则匹配成功,弹栈;若 X!=a,且 X 为终结符,则报错;若 X!=a,且 X 为非终结符,则查表弹压栈。

若不含多重表项(或有多重表项但是考察 FIRST 和 FOLLOW 集合后无冲突),则为 LL(1) 文法。

复习一下预测分析表的样子(列首只有终结符,行首只有非终结符):
在这里插入图片描述

自底向上分析: 从树叶到树根建立分析树。又称“移进-归约”分析方法。由于是最右推导的逆过程,所以又称作最左规约。

LR分析方法: 模型如下图所示。
在这里插入图片描述

活前缀: 不含句柄后任何符号的前缀。上面 X 1 X 2 . . . X m \text X_1 \text X_2...\text X_m X1X

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值