概述
(10条消息) 编译原理习题_hasp_Jason的博客-CSDN博客
实在是抽不开身(菜鸡本菜),这是某位大佬整理好的,可以直接看Ta的~
Ta的错误:
1.本题应该选C,Ta误选为A!
前言:由于笔者今年正在学HIT大三下的编译原理,为适应新时代学习方法,特在此写笔记方便日后复习使用(预计5月末考试?......),这里会定时更新,取决于笔者自学的速度,题目是我认为比较好的,所以放在了这里,欢迎交流与指正!
目录
目录
目录
第一章:绪论
第二章:程序设计语言及其文法
第三章:词法分析
第四章. 语法分析_1
第四章. 语法分析_2
第四章. 语法分析_3
第四章. 语法分析_4
第七章 运行存储分配
第一章:绪论
1. 编译程序中语法分析器接收以( A)为单位的输入
A.单词 B.表达式 C.产生式 D.句子
2. 按逻辑上划分,编译程序第三步工作是(A )。
A.语义分析
B.词法分析
C.语法分析
D.代码生成
解读: 从前到后依次为:词法分析、语法分析、语义分析...
3. 用高级语言编写的程序经编译后产生的程序叫( B).
A.源程序
B.目标程序
C.连接程序
D.解释程序
解读:编译是把源程序变成目标程序的过程
4. 编译程序是一种( B)。
A.汇编程序
B.翻译程序
C.解释程序
D.目标程序
5. ( C )不是编译程序的组成部分。
A.词法分析程序
B.代码生成程序
C.设备管理程序
D.语法分析程序
解读:编译过程的5个阶段分别是:词法分析,语法分析,语义分析与中间代码生产,代码优化,目标代码生成。
6.通常一个编译程序中,不仅包含词法分析,语法分析,语义分析,中间代码生成,代码优化,目标代码生成等六个部分,还应包括( D)。
A.符号执行器
B.模拟执行器
C.解释器
D.表格处理和出错处理
7.将编译程序分成若干“遍”,是为了( D)。
A.利用有限的机器内存并提高机器的执行效率
B.提高程序的执行效率
C.利用有限的机器内存但降低了机器的执行效率
D.使程序的结构更为清晰
第二章:程序设计语言及其文法
1. 文法E→E+E|E*E|i的句子i*i+i*i有( D)棵不同的语法树。
A.1 B.3 C.5 D.7
解读:如图所示:
2. 由文法的开始符号出发经过若干步(包括0步)推导产生的文法符号序列称为( B)
A.语言 B.句型 C.句子 D.句柄
解读:产生的序列可能含有非终结符,不一定为句子
第三章:词法分析
1. 词法分析器的输出结果是( D)。
A.单词自身值
B.单词在符号表中的位置
C.单词的种别编码
D.单词的种别编码和自身值
解答:MOOCppt中的原话
2. 词法分析器不能( D)。
A.识别出数值常量
B.过滤源程序中的注释
C.扫描源程序并识别记号
D.发现括号不匹配
解答:A、B是显然的,如B可以通过识别/*..*/的自动机来实现,
C选项,笔者是在百度百科的词法分析器的基本定义找到的,传送门:词法分析器
D选项:“发现括号不匹配”为语法分析器的功能。
3. 词法分析器用于识别 单词,加工对象是 源程序
4.一个正规式只能对应一个确定的有限状态自动机(×)
解答:只有状态最少的DFA是唯一的。学过《形式语言与自动机》的应该了解,某些DFA是可以通过等价类化简的,所以题目的1对1表达并不准确。
第四章. 语法分析_1
1. 如果文法G是无二义的,则它的任何 句子/句型 α( D)
A. 可能存在两个不同的最左推导,但它们对应的语法树相同
B. 最左推导和最右推导必定相同
C.最左推导和最右推导对应的语法树可能不同
D.最左推导和最右推导对应的语法树必定相同
解:因为是无二义性的,所以答案显然
第四章. 语法分析_2
1 在语法分析处理中,FIRST集合、FOLLOW集合均是(B )。
A. 非终结符集
B. 终结符集
C. 字母表
D. 状态集
2 在编译过程中,如果遇到错误应该( C)。
A. 把错误理解成局部的错误
B. 对错误在局部范围内进行纠正,继续向下分析
C. 当发现错误时,跳过错误所在的语法单位继续分析下去
D. 当发现错误时立即停止编译,待用户改正错误后再继续编译
第四章. 语法分析_3
1 一个句型中的( A)称为该句型的句柄。
A. 最左直接短语
B. 最右直接短语
C. 终结符
D. 非终结符
解:句柄也叫最左直接短语->直接短语是高度为2的子树的边缘->边缘是语法分析树的叶子结点
2 在自底向上的语法分析方法中,分析的关键是(A )。
A. 寻找句柄
B. 寻找句型
C. 消除递归
D. 选择候选式
3 在自顶向下的语法分析方法中,分析的关键是( D)。
A. 寻找句柄
B. 寻找句型
C. 消除递归
D. 选择候选式
4 在规范归约中,用( B)来刻画可归约串。
A. 直接短语
B. 句柄
C. 最左素短语
D. 素短语
解:规范规约是最左规约,即自下而上采取的分析动作,所以是句柄,同问题2
5 下列动作中,不是自下而上分析动作的是( B)。
A. 移进
B. 展开
C. 接受
D. 报错
解:自下而上的动作有:
6 下列动作中,不是自上而下分析动作的是( C)。
A. 匹配
B. 展开
C. 移进
D. 报错
解:自上而下的动作有:
- 匹配终结符,则前往下一个。
- 展开非终结符,逆序放入符号栈。
- 成功:栈顶和剩余输入都是$。
- 出错:调用错误恢复例程。
7 设有文法G[T]:
T→T*F|F
F→F↑P|P
P→(T)|a
该文法句型T*P↑(T*F)的句柄是下列符号串 ( C ) 。
A. (T*F)
B. T*F
C. P
D. P↑(T*F)
解:句柄是最左直接短语,画出题目的语法分析树可以直接短语有P,T*F,而P在T*F的左边
8 LR分析表中的转移表(goto)是以(B)作为列标题的。
A. 终结符
B. 非终结符
C. 终结符或非终结符
D. 表示状态的整型数
9 LR分析表中的动作表(action)是以( D)作为列标题的。
A. 终结符
B. 非终结符
C. 终结符或非终结符
D. 终结符和结束符$
解:以SLR分析表为例:
第四章. 语法分析_4
1 一个LR(1)文法合并同心集后若不是LALR(1)文法( B)
A. 则可能存在移进/归约冲突
B. 则可能存在归约/归约冲突
C. 则可能存在移进/归约冲突和归约/归约冲突
D. 以上说法都不对
解:同心项目集合并的是展望符的集合,展望符只对归约有用,所以可能会引入归约/归约冲突。
2 若状态k含有项目“A→α· ”,且仅当输入符号a∈FOLLOW(A)时,才用规则“A →α”归约的
语法分析方法是( D)。
A. LALR分析法
B. R(0)分析法
C. LR(1)分析法
D. SLR(1)分析法
解读:仅使用FOLLOW集的元素这一特点可以判断出是SLR文法,即SLR(1),特殊展望符的为LALR(1)/LR(1),全都使用的为LR(0)文法
3 LR(1)文法都是(C )。
A. 无二义性且无左递归
B. 可能有二义性但无左递归
C. 无二义性但可能是左递归
D. 可以既有二义性又有左递归
解:LR(1)文法是确定性文法,一定不是二义性文法,但LR(1)文法在生成过程中不同于LL(1)文法需要先消除左递归,所以可能产生含有左递归的LR(1)文法
4 就文法的描述能力来说,有( C)。
A. SLR(1) ⊂ LR(0)
B. LR(1) ⊂ LR(0)
C. SLR(1) ⊂ LR(1)
D. 无二义文法 ⊂ LR(1)
解:
LALR(1)文法介于LR文法与SLR文法之间,因为推迟了发现错误的能力,但仍然使用展望符。
5 编译程序的语法分析器必须输出的信息是( B)。
A. 语法规则信息
B. 语法错误信息
C. 语法分析过程
D. 语句序列
解读:可联想自己的一些IDE...
第七章 运行存储分配
只能记住..
最后
以上就是大意小兔子为你收集整理的编译原理MOOC部分习题答案+解读(逐渐更新..的全部内容,希望文章能够帮你解决编译原理MOOC部分习题答案+解读(逐渐更新..所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复