我是靠谱客的博主 大意小兔子,最近开发中收集的这篇文章主要介绍编译原理MOOC部分习题答案+解读(逐渐更新..,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

(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. 报错

解:自上而下的动作有:

  1. 匹配终结符,则前往下一个。
  2. 展开非终结符,逆序放入符号栈。
  3. 成功:栈顶和剩余输入都是$。
  4. 出错:调用错误恢复例程。

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部分习题答案+解读(逐渐更新..所遇到的程序开发问题。

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

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

评论列表共有 0 条评论

立即
投稿
返回
顶部