概述
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的活动记录中的访问链应该指向的那个访问链
最后
以上就是结实水池为你收集整理的编译原理复习的全部内容,希望文章能够帮你解决编译原理复习所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复