我是靠谱客的博主 结实水池,最近开发中收集的这篇文章主要介绍编译原理复习,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

1.选择题

词法分析器用于识别单词。(这指的是识别出来什么)
1)0型文法:短语文法
1型文法:上下文有关文法
2型文法:上下文无关文法
3型文法:正则文法
其中2,3可以用来编程分析,0,1还没用到过。

2)DFA不一定是全函数;
DFA和NFA都可以有多个接受状态,且都有唯一开始状态;
DFA是NFA的特殊形式。
DFA从同一个状态出发,对于同一个输入符号,只能有一个转换

3)描述文法符号的属性有:综合属性&继承属性;
文法无二义时,句柄唯一;
文法是二义的时候,句柄可能不唯一。
句柄是该句型中和一个产生式右部匹配的字串
大多时候,句型中能和产生式A->β右部匹配的最左字串β是句柄,有时候不是

4)S属性定义属于L属性定义;
L属性定义自下而上计算的时候,处理继承属性要引入标记非终结符;
标记非终结符可以
* 删除翻译方案中嵌入的动作
* 模拟继承属性计算
* 确定分析栈上属性的位置

5)A->bcdef中,可以算A的综合属性以及bcdef的继承属性;算继承属性的时候,比如d的继承属性依赖于A的继承属性和bc的属性

6)衬垫区是由于对齐问题而引起的无用空间。
寄存器地址模式的附加代价为0;
指令附加代价对应于指令以字计算的长度;
指令的代价是元地址模式附加代价+目的地址附加代价+1
display表只和过程的嵌套层次有关。

2. 填空题

语法树是分析树的浓缩表示。在语法书中,算符和关键字不是作为叶节点,而是作为分支节点。

3. 大题

容易死掉的地方

  • 要填写约规的时候,LALR和LR(1)按照前向搜索符填表,SLR按照FOLLOW集合填表
  • 生成LR(1)项目集的时候,只有产生闭包的时候,才会更新前向搜索符。更新的时候看FIRST_S。换句话说,FIRST_S是我们做LR(1)时候唯一要考虑的东西!
  • 生成LALR项目集的时候,只要同心项目集就可以合并
  • 画识别活前缀的自动机的时候,接受状态为所有有规约的行号。acc可以理解为r0的另一种写法。

题目说,SLR才是SLR,LR就是LR(1),LALR就是LALR。或者纵观全题,如果下一问有说要判断文法的话,就是构造那个文法的分析表。

当你求到一个FIRST集合含有空串就要十万警惕Follow集合!!!要是有人在他前面会看穿他,直到看清他的Follow集

4.简答题

=>假定嵌套深度为np的过程p调用嵌套深度为nx的过程x ,则建立被调用过程静态链的过程是什么?
答: np < nx的情况
x肯定就声明在p中
被调用过程的访问链必须指向调用过程的活动记录的访问链
np ³ nx的情况
p和x的嵌套深度分别为1,2,…,nx- 1的外围过程肯定相同
追踪访问链np - (nx – 1)次,到达了静态包围x和p的且离它们最近的那个过程的最新活动记录
所到达的访问链就是x的活动记录中的访问链应该指向的那个访问链

最后

以上就是结实水池为你收集整理的编译原理复习的全部内容,希望文章能够帮你解决编译原理复习所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(45)

评论列表共有 0 条评论

立即
投稿
返回
顶部