20春西交《编译原理》在线作业答案3
奥鹏西安交通大学2020年3月课程考试《编译原理》参考资料答案
西安交通大学课程考试复习资料单选题1.有文法G=({S},{a},{S→SaS,S→ε},S),该文法是( )。
A.LL(1)文法B.二义性文法C.算符优先文法D.SLR(1)文法;答案: B2.正规表达式(ε|a|b)2表示的集合是( )A.{ε,ab,ba,aa,bb}B.{ab,ba,aa,bb}C.{a,b,ab,aa,ba,bb}D.{ε,a,b,aa,bb,ab,ba}答案: D3.以( )作为输出,允许自程序单独编译。
A.绝对机器代码B.可再定位机器语言C.汇编语言程序D.中间语言答案: B4.Fortran语言的编译程序采用( )分配策略。
A.静态B.最佳C.堆式动态D.栈式动态答案: A5.两个不同过程的活动,其生存期是( )。
A.重叠的,不嵌套的B.不重叠的,嵌套的C.重叠的,嵌套的D.不重叠的,不嵌套的答案: B6.表达式作为实在参数可以传递给被调用的过程,替换过程体中的( )。
A.局部变量B.形式参数C.全局变量D.实在参数答案: B7.编译程序使用( )区别标识符的作用域。
A.说明标识符的过程或函数名B.说明标识符的过程或函数的静态层次C.说明标识符的过程或函数的动态层次D.标识符的行号答案: B8.表达式-a+b*(-c+d)的逆波兰式是( )。
A.ab+-cd+-*B.a-b+c-d+*C.a-b+c-d+*D.a-bc-d+*+答案: D9.使用三元式是为了( )。
A.便于代码优化处理B.避免把临时变量填入符号表C.节省存储代码的空间D.提高访问代码的速度答案: B10.为了便于优化处理,三地址代码可以表示成( )。
A.三元式B.四元式C.后缀式D.间接三元式答案: D11.布尔表达式计算时可以采用某种优化措施,比如A and B用if-then-else可解释为( )。
A.if A then true else BB.if A then B else false;C.if A then false else true;D.if A then true else false;答案: B12.对应于产生式A→XY继承属性Y.y的属性计算,可能正确的语义规则是( )。
编译原理3答案
编译原理3答案【篇一:编译原理试题及答案3】填空题:1、编译方式与解释方式的根本区别在于(是否生成目标代码)。
2、对编译程序而言,输入数据是(源程序),输出结果是(目标程序)。
3、如果编译程序生成的目标程序是机器代码程序,则源程序的执行分为两大阶段:(编译阶段)和(运行阶段)。
4、如果编译程序生成的目标程序是汇编语言程序,则源程序的执行分成三个阶段:(编译阶段)、(汇编阶段)和(运行阶段)。
5、自顶向下语法分析方法会遇到的主要问题有(回溯)和((左递归带来的)无限循环)。
6、ll(k)分析法中,第一个l的含义是(从左到右进行分析),第二个l的含义是(每次进行最左推导),“k”的含义是(向输入串中查看k个输入符号)。
7、ll(1)分析法中,第一个l的含义是(从左到右进行分析),第二个l的含义是(每次进行最左推导),“1”的含义是(向输入串中查看1个输入符号)。
8、自顶向下语法分析方法的基本思想是:从(识别符号)出发,不断建立(直接推导),试图构造一个推导序列,最终由它推导出与输入符号相同的(符号串)。
9、自底向上语法分析方法的基本思想是:从待输入的符号串开始,利用文法的规则步步向上进行(直接归约),试图(归约)到文法的(识别符号|开始符号)。
10、lr(0)分析法的名字中,“l”的含义是(从左到右进行分析),“r”的含义是(采用最右推导的逆过程---最左归约),“0”的含义是(向貌似句柄的符号串后查看0个输入符号)。
11、lr(1)分析法的名字中,“l”的含义是(从左到右进行分析),“r”的含义是(采用最右推导的逆过程---最左归约),“1”的含义是(向貌似句柄的符号串后查看1个输入符号)。
12、slr(1)分析法的名字中,“s”的含义是(简单的),“l”的含义是(从左到右进行分析),“r”的含义是(采用最右推导的逆过程---最左归约),“1”的含义是(向貌似句柄的符号串后查看1个输入符号)。
13、在编译过程中,常见的中间语言形式有(逆波兰表示)、(三元式)、(四元式)和(树形表示)。
编译原理教程-课后习题答案第三章语法分析
由 A′→ABl 得 FIRST(′l′) FOLLOW(B) , 即 FOLLOW(B)={l};
由 A→aA′ 得 FOLLOW(A) FOLLOW(A′) , 即 FOLLOW(A′)={#,d};
第三章 语法分析
由 B→dB′ 得 FOLLOW(B) FOLLOW(B′) , 即 FOLLOW(B′)={l}。
第三章 语法分析
求得:
FIRST(A)={a}
FIRST(A′)={a, ε }
FIRST(B)={d}
FIRST(B′)={b, ε }
对文法开始符号A,有FOLLOW(A)={#}。
由 A′→ABl 得 FIRST(B)\{ ε }FOLLOW(A) , 即 FOLLOW(A)={#,d};
第三章 语法分析
3.9 考虑文法G[S]: S→(T) | a+S | a T→T,S | S
消除文法的左递归及提取公共左因子,然后对每 个非终结符写出不带回溯的递归子程序。
【解答】 消除文法G[S]的左递归: S→(T) | a+S | a T→ST′ T′→,ST′| ε
第三章 语法分析 提取公共左因子:
短语和最左素短语。 【解答】 (1) 句型(S, (a))的语法树如图3-5所示。
第三章 语法分析
S (L ) L ,S S (L )
S a
图3-5 句型(S,(a))的语法树
第三章 语法分析
(2) 由图3-5可知: 短语:S、a、(a)、S,(a)、(S,(a)); 直接短语:a、S; 句柄:S; 素短语:素短语可由图3-5中相邻终结符之间的优 先关系求得,即:
由图3-3可直接得到正规文法G[S]如下: G[S]:S→aA|bB A→aS|bC|b B→bS|aC|a C→bA|aB|ε
奥鹏西安交通大学2020年3月课程考试《编译原理》参考资料答案
西安交通大学课程考试复习资料单选题1.有文法G=({S},{a},{S→SaS,S→ε},S),该文法是( )。
A.LL(1)文法B.二义性文法C.算符优先文法D.SLR(1)文法;答案: B2.正规表达式(ε|a|b)2表示的集合是( )A.{ε,ab,ba,aa,bb}B.{ab,ba,aa,bb}C.{a,b,ab,aa,ba,bb}D.{ε,a,b,aa,bb,ab,ba}答案: D3.以( )作为输出,允许自程序单独编译。
A.绝对机器代码B.可再定位机器语言C.汇编语言程序D.中间语言答案: B4.Fortran语言的编译程序采用( )分配策略。
A.静态B.最佳C.堆式动态D.栈式动态答案: A5.两个不同过程的活动,其生存期是( )。
A.重叠的,不嵌套的B.不重叠的,嵌套的C.重叠的,嵌套的D.不重叠的,不嵌套的答案: B6.表达式作为实在参数可以传递给被调用的过程,替换过程体中的( )。
A.局部变量B.形式参数C.全局变量D.实在参数答案: B7.编译程序使用( )区别标识符的作用域。
A.说明标识符的过程或函数名B.说明标识符的过程或函数的静态层次C.说明标识符的过程或函数的动态层次D.标识符的行号答案: B8.表达式-a+b*(-c+d)的逆波兰式是( )。
A.ab+-cd+-*B.a-b+c-d+*C.a-b+c-d+*D.a-bc-d+*+答案: D9.使用三元式是为了( )。
A.便于代码优化处理B.避免把临时变量填入符号表C.节省存储代码的空间D.提高访问代码的速度答案: B10.为了便于优化处理,三地址代码可以表示成( )。
A.三元式B.四元式C.后缀式D.间接三元式答案: D11.布尔表达式计算时可以采用某种优化措施,比如A and B用if-then-else可解释为( )。
A.if A then true else BB.if A then B else false;C.if A then false else true;D.if A then true else false;答案: B12.对应于产生式A→XY继承属性Y.y的属性计算,可能正确的语义规则是( )。
编译原理试题及答案
编译原理试题及答案
试题:
1. 解释编译原理的定义,同时给出编译器的作用。
2. 简要描述编译过程中的四个基本步骤。
3. 解释词法分析器的功能和作用。
4. 解释语法分析器的功能和作用。
答案:
1. 编译原理是研究如何将高级语言程序转化为等价机器语言程序的一门学科。
编译器是将高级语言文本转换成等价的机器语言的软件工具。
它负责将源代码转化为目标代码,以便计算机能够理解和执行。
2. (1) 词法分析:将源代码分解成一系列单词或标记。
(2) 语法分析:根据语法规则组织单词或标记形成语法树。
(3) 语义分析:分析语法树以检测语义错误。
(4) 代码生成:根据语法树生成目标代码。
3. 词法分析器的功能是将源代码分解成一系列单词或标记。
它将源代码读取为字符流,然后将这些字符组成单词,同时可以去除空格、注释等不具有实际意义的内容。
词法分析器的作用是为语法分析器提供正确的单词序列,为后续的语义分析和代
码生成步骤建立基础。
4. 语法分析器的功能是根据语法规则组织单词或标记形成语法树。
它通过构建语法树来分析源代码的语法结构,同时可以检测语法错误。
语法分析器的作用是为后续的语义分析和代码生成步骤提供一个结构化的表示形式,便于后续的处理和转换。
《编译原理》习题解答
《编译原理》习题解答:第一次作业:P14 2、何谓源程序、目标程序、翻译程序、汇编程序、编译程序和解释程序?它们之间可能有何种关系?答:被翻译的程序称为源程序;翻译出来的程序称为目标程序或目标代码;将汇编语言和高级语言编写的程序翻译成等价的机器语言,实现此功能的程序称为翻译程序;把汇编语言写的源程序翻译成机器语言的目标程序称为汇编程序;解释程序不是直接将高级语言的源程序翻译成目标程序后再执行,而是一个个语句读入源程序,即边解释边执行;编译程序是将高级语言写的源程序翻译成目标语言的程序。
关系:汇编程序、解释程序和编译程序都是翻译程序,具体见P4 图 1.3。
P14 3、编译程序是由哪些部分组成?试述各部分的功能?答:编译程序主要由8个部分组成:(1)词法分析程序;(2)语法分析程序;(3)语义分析程序;(4)中间代码生成;(5)代码优化程序;(6)目标代码生成程序;(7)错误检查和处理程序;(8)信息表管理程序。
具体功能见P7-9。
P14 4、语法分析和语义分析有什么不同?试举例说明。
答:语法分析是将单词流分析如何组成句子而句子又如何组成程序,看句子乃至程序是否符合语法规则,例如:对变量x:= y 符合语法规则就通过。
语义分析是对语句意义进行检查,如赋值语句中x与y类型要一致,否则语法分析正确,语义分析则错误。
P15 5、编译程序分遍由哪些因素决定?答:计算机存储容量大小;编译程序功能强弱;源语言繁简;目标程序优化程度;设计和实现编译程序时使用工具的先进程度以及参加人员多少和素质等等。
补充:1、为什么要对单词进行内部编码?其原则是什么?对标识符是如何进行内部编码的?答:内部编码从“源字符串”中识别单词并确定单词的类型和值;原则:长度统一,即刻画了单词本身,也刻画了它所具有的属性,以供其它部分分析使用。
对于标识符编码,先判断出该单词是标识符,然后在类别编码中写入相关信息,以表示为标识符,再根据具体标识符的含义编码该单词的值。
西交《编译原理》在线作业
C. 活前缀
D. LR(0)项目
满分:2 分
10. 最适合动态建立数据实体的内存分配方式是( )。
A. 栈式分配
B. 堆式分配
C. 编译时预先分配
D. 以上三种均可
满分:2 分
11. 语义分析与中间代码产生所依循的是( )。
A. 正规式
A. 寻找句柄
B. 寻找句型
C. 消除递归
D. 选择候选式
满分:2 分
26. 有限自动机可以有( )个初始状态。
A. 一个
B. 两个
C. 三个
D. 多个
满分:2 分
27. 下述方法中,( )不是自下而上分析方法。
A. 规范归约
B. 算符优先分析法
C. (1)(2)(3)
D. (2)(3)
满分:2 分
35. 文法 E→(E)产生的语言是( )。
A. 空集
B. ()
C. (E)
D. ((((E))))
满分:2 分
36. 下面哪个文法具有二义性( )。
A. A→AA | (A) |
B. E→E+T|T
满分:2 分
3. 正则文法( )二义性的。
A. 可以是
B. 一定不是
C. 一定是
D. 可以不是
满分:2 分
4. 优化所依循的原则是( )。
A. 正规式
B. 上下文无关文法
C. 语言的语义规则
D. 程序的等价变换规则
满分:2 分
5. 在下述的编译方法中,自上而下的分析方法有( )。 ①简单优先分析 ②算符优先分析 ③递归下降分析 ④预测分析技术 ⑤LR(K)分析 ⑥ SLR(K)分析 ⑦ LL(K)分析 ⑧LALR(K)分析
西交20秋《编译原理》在线作业【标准答案】
(单选题) 1: 文法G产生的( )的全体是该文法描述的语言。
A: 句型
B: 终结符集
C: 非终结符集
D: 句子
正确答案: D
(单选题)2: 正则文法( )二义性的。
A: 可以是
B: 一定不是
C: 一定是
D: 没有正确答案
正确答案: A
(单选题)3: 用高级语言编写的程序经编译后产生的程序叫( )
A: 源程序
B: 目标程序
C: 连接程序
D: 解释程序
正确答案: B
(单选题)4: 在LR(0)的ACTION子表中,如果某一行中存在标记"rj"的栏,则( )。
A: 该行必定填满rj
B: 该行未填满rj
C: 其他行也有rj
D: goto子表中也有rj
正确答案: A
(单选题)5: 程序语言的单词符号一般可以分为5种,下面( )不需要超前搜索
A: 关键字
B: 标识符
C: 常数
D: 算符和界符
正确答案: B
(单选题)6: 使用()可以定义一个程序的意义。
A: 语义规则
B: 词法规则
C: 产生规则
D: 词法规则
正确答案: A
(单选题)7: 现代多数实用编译程序所产生的目标代码都是一种可重定位的指令代码,在运行前必须借助于一个( )把各个目标模块,包括系统提供的库模块连接在一起,确定程序变。
编译原理课后答案 (3)
编译原理课后答案问题一计算机程序的执行是一个多阶段的过程,其中编译是其中的一环。
请问编译的三个主要阶段分别是什么?答:编译过程一般可以分为三个主要阶段,分别是词法分析、语法分析和代码生成。
下面分别对这三个阶段进行介绍。
1. 词法分析词法分析是编译过程的第一步,也是最基础的一步。
它的任务是将源代码中的字符序列分解成一个个具有独立含义的单词,这些单词被称为“记号”或“词法单元”。
词法分析器根据程序中每一个字符的组合规则,将其转化为一个个词法单元,并记录下词法单元的类型标记。
词法分析器的工作一般通过有限状态自动机来实现,它根据一定的词法规则进行扫描和分析。
2. 语法分析语法分析是编译过程的第二步,它接收词法分析器生成的词法单元流,根据语法规则进行分析,并生成一棵语法树。
语法分析的主要任务是确定输入程序的结构,检查程序的语法正确性,并生成用于后续处理的输入形式。
语法分析器一般采用的是自顶向下或自底向上的分析方法,常用的方法有递归下降法和LR(1)分析法。
3. 代码生成代码生成是编译过程的最后一步,它将语法分析生成的语法树转化为目标机器的可执行代码。
代码生成器通过遍历语法树,将每个语法树节点转化为相应的目标机器代码。
代码生成过程中需要考虑到目标机器的特性和限制,以及优化代码的效率和性能。
问题二请解释一下编译原理中的词法规则是什么?答:编译原理中的词法规则指的是一组规定词法单元模式的规则。
它描述了如何将输入字符序列转换为词法单元,并为每个词法单元定义了一个标记。
词法规则一般使用正则表达式来描述词法单元的模式。
编译器根据词法规则构建词法分析器,用于将源代码分割成一系列的词法单元。
词法规则的灵活性和准确性对编译过程的性能和结果都有较大的影响。
一个完整的词法规则一般包含以下几个部分:1.正则表达式:描述了词法单元的模式,使用特定的正则表达式语法来表示。
2.动作:描述了当词法单元匹配到模式时,需要执行的动作或处理过程。
西工大20春《编译原理》在线作业答案
西工大20春《编译原理》在线作业答案
西工大19秋《编译原理》在线作业
试卷总分:100 得分:100
一、单选题(共20 道试题,共50 分)
1.一个文法是递归的,则它产生的语言的句子个数()。
A.必定无穷
B.必定有限
C.可能无穷,也可能有限
D.说不准
答案:A
2.如果活动记录中没有DISPLAY表,则说明()。
A.程序中不允许有递归定义的过程
B.程序中不允许有嵌套定义的过程
C.程序中既不允许有嵌套定义的过程,也不允许有递归定义的过程
D.程序中既允许有嵌套定义的过程,也允许有递归定义的过程
答案:B
3.语法分析器可以发现源程序中的()。
A.语义错误
B.语法和语义错误
C.错误并校正
D.语法错误
答案:D
4.给定文法G[E]:E→E+T∣T T→T*F∣F F→(E)∣i, 则以下()全都不是规范句型的活前缀①T+ ②T* ③ε④T*F ⑤E+E ⑥E* ⑦E+ T* ⑧i ⑨(E+T)⑩(i)
A.②④⑥
B.⑤⑥⑩
C.①②③④
D.⑦⑧⑨
答案:A
5.词法分析器用于识别()。
A.字符串
B.语句
C.单词
D.标识符
答案:C
6.在整理和查找操作时,下列哪项的效果最高()。
A.杂凑
B.二叉树
C.线性表
D.图。
(完整版)编译原理习题及答案(整理后)
8、规范推导是最左推导,故选 d。
9、由 T→T,…和 T→(… 得 FIRSTVT(T))={(,,)};
由 T→S 得 FIRSTVT(S)⊂FIRSTVT(T),而 FIRSTVT(S)={b,∧,(};即
FIRSTVT(T)={b,∧,(,,};
因此选 c。
10、d 11、c 12、b 13、b 14、b
标语言
第二章
一、单项选择题
1、文法 G:S→xSx|y 所识别的语言是 。
a. xyx
b. (xyx)* c. xnyxn(n≥0) d. x*yx*
2、文法 G 描述的语言 L(G)是指 。
a. L(G)={α|S⇒+ α , α∈VT*}
b. L(G)={α|S⇒* α, α∈VT*}
c. L(G)={α|S⇒* α,α∈(VT∪VN*)} d. L(G)={α|S⇒+ α, α∈(VT∪VN*)}
6、一个文法所有句型的集合形成该文法所能接受的语言。
五、简答题
1、句柄 2、素短语
3、语法树
4、归约
六、问答题
1、给出上下文无关文法的定义。
2、文法 G[S]:
() () () () ()
5、推导
S→aSPQ|abQ
QP→PQ
bP→bb
bQ→bc
cQ→cc (1)它是 Chomsky 哪一型文法? (2)它生成的语言是什么? 3、按指定类型,给出语言的文法。 L={aibj|j>i≥1}的上下文无关文法。 4、有文法 G:S→aAcB|Bd
a. 23 B. 42 c. 30 14、规范归约指 。
d. 17
a. 最左推导的逆过程
b. 最右推导的逆过程
西安交通大学《编译原理》在线作业答卷
西交《编译原理》在线作业试卷总分:100 得分:100一、单选题 (共 30 道试题,共 60 分)1. 许多广为使用的语言,如Fortran、C、Pascal等,属于()。
A. 强制式语言B. 应用式语言C. 基于规则的语言D. 面向对象的语言答案:A2.在编译方法中,动态存储分配的含义是( )。
A. 在运行阶段对源程序中的数组.变量.参数等进行分配B. 在编译阶段对源程序中的数组.变量.参数进行分配C. 在编译阶段对源程序中的数组.变量.参数等进行分配,在运行时这些数组.变量.参数的地址可根据需要改变D. 其他都不正确答案:A3.现代多数实用编译程序所产生的目标代码都是一种可重定位的指令代码,在运行前必须借助于一个把各个目标模块,包括系统提供的库模块连接在一起,确定程序变量或常数在主存中的位置,装入内存中制定的起始地址,使之成为一个可运行的绝对指令代码的程序。
A. 重定位程序;B. 解释程序;C. 连接装配程序;D. 诊断程序;答案:C4.语法分析应遵循()。
A. 语义规则B. 语法规则C. 构词规则D. 等价变换规则答案:C5.()是指源程序中不符合语法或词法规则的错误,这些错误一般在词法分析或语法分析时能检测出来。
A. 语义错误B. 语法错误C. 短语错误D. 短句错误答案:B6.在使用高级语言编程时,首先可通过编译程序发现源程序的全部和部分( )错误。
A. 语法B. 语义C. 语用D. 运行答案:A7.下列关于标识符和名字叙述中,正确的是( )。
A. 标识符有一定的含义B. 名字是一个没有意义的字符序列C. 名字有确切的属性D. 都不正确答案:C8.编译程序是一种( )A. 汇编程序B. 翻译程序C. 解释程序D. 目标程序答案:B9.代多数实用编译程序所产生的目标代码都是一种可重定位的指令代码,在运行前必须借助于一个()把各个目标模块,包括系统提供的库模块连接在一起,确定程序变量或常数在主存中的位置,装入内存中制定的起始地址,使之成为一个可运行的绝对指令代码的程序。
Zhujiao057《编译原理》习题答案
《编译原理》习题答案一、单项选择题(本大题共164小题,每小题2分)1、如果一个编译程序能产生不同于其宿主机的机器代码,则称它为( C )。
A、诊断编译程序B、优化编译程序C、交叉编译程序D、可变目标编译程序2、( C )不是编译程序的组成部分。
A、词法分析程序B、代码生成程序C、设备管理程序D、语法分析程序3、现代多数实用编译程序所产生的目标代码都是一种可重定位的指令代码,在运行前必须借助于一个( C )把各个目标模块,包括系统提供的库模块连接在一起,确定程序变量或常数在主存中的位置,装入内存中制定的起始地址,使之成为一个可运行的绝对指令代码的程序。
A、重定位程序B、解释程序C、连接装配程序D、诊断程序;4、产生正则语言的文法为(D)。
A、0型B、1型C、2型D、3型5、(A)是一种典型的解释型语言。
A、BASICB、CC、FORTRAND、PASCAL6、把汇编语言程序翻译成机器可执行的目标程序的工作是由(B)完成的。
A、编译器B、汇编器C、解释器D、预处理器7、用高级语言编写的程序经编译后产生的程序叫(B)A、源程序B、目标程序C、连接程序D、解释程序8、文法G:S→b|∧(T)T→T,S|S则FIRSTVT(T)(C)。
A、{b,∧,(}B、{b,∧,)}C、{b,∧,(,,}D、{b,∧,),,}9、通常一个编译程序中,不仅包含词法分析,语法分析,语义分析,中间代码生成,代码优化,目标代码生成等六个部分,还应包括(C)。
A、模拟执行器B、解释器C、表格处理和出错处理D、符号执行器10、编译程序绝大多数时间花在(D)上。
A、出错处理B、词法分析C、目标代码生成D、表格管理11、设文法为:S→SA|AA→a|b则对句子aba,下面(D)是规范推导。
A、S⇒SA⇒SAA⇒AAA⇒aAA⇒abA⇒abaB、S⇒SA⇒SAA⇒AAA⇒AAa⇒Aba⇒abaC、S⇒SA⇒SAA⇒SAa⇒Sba⇒Aba⇒abaD、S⇒SA⇒Sa⇒SAa⇒Sba⇒Aba⇒aba12、Chomsky把文法分成四种类型,其中,( D )也称正规文法A、0型B、1型C、2型D、3型13、源程序是句子的集合,(B)可以较好地反映句子的结构。
编译原理第3章课后习题答案
consonant -> [b-df-hj-np-tv-z] ctnvowels->(consonant*)(((a+)(consonant*))+)(((e+)(consonant*))+)
(((i+)(consonant*))+)(((o+)(consonant*))+)(((u+)(consonant*))+)
Dtran[I,b] =ε-closure(move(I,b))= ε-closure({5, 16})=G DFA D 的转换表 Dtran NFA 状态 {0,1,2,4,7} {1,2,3,4,6,7,8} {1,2,4,5,6,7} {1,2,4,5,6,7,9} {1,2,4,5,6,7,10,11,12,13,15} {1,2,3,4,6,7,8,12,13,14,15,17,18} {1,2,4,5,6,7, 12,13,15,16,17,18} {1,2,4,5,6,7, 9,12,13,15,16,17,18} {1,2,4,5,6,7, 10,11,12,13,15,16,17,18} 可得 DFA 的如下状态转换图: DFA 状态 A B C D E F G H I a B B B B F F F F F b C D C E G H G I G
编译原理第 2 版参考习题答案 (3 章) 第 3 章 词法分析 3.2.2 试描述下列正则表达式定义的语言 (1) a( a|b )*a 答: { aa, aaa, aba, aaaa, aaba, abaa, abba, ... },(按穷举法) 或以 a 开头和结尾,长度大于等于 2 的 a,b 串 (2) ( (ε|a)b*) )* 答: 由 a 和 b 组成的任意符号串 (自然语言描述)
编译原理习题及答案1~3
2021/10/10
2
《遍”是为了 。
A.提高程序的执行效率
B.使程序的结构更加清晰
C.利用有限的机器内存并提高机器的执行效率
D.利用有限的机器内存但降低了机器的执行效
率
(3) 构造编译程序应掌握 。
表2-1 状态转换矩阵
I
Ia
Ib
{x}
{x,y}
{y}
{y}
—
{x,y}
{x,y}
{x,y}
{x,y}
将转换矩阵中的所有子集重新命名,形成表2-2所 示的状态转换矩阵,即得到
S
a
b
0
2
1
1
—
2
2
2
2
2021/10/10
21
《编译原理教程》习题解析
22
其状态转换图如图2-3所示。
图2-3 习题2.3的DFA M′
(8) 由于正则闭包R+=R*R=RR*,故 (a|b)*(a|b)=(a|b)(a|b)*。故选A。
2021/10/10
17
《编译原理教程》习题解析
18
2.2 什么是扫描器?扫描器的功能是什么? 【解答】 扫描器就是词法分析器,它接受输 入的源程序,对源程序进行词法分析并识别出一 个个单词符号,其输出结果是单词符号,供语法 分析器使用。通常把词法分析器作为一个子程序, 每当语法分析器需要一个单词符号时就调用这个 子程序。每次调用时,词法分析器就从输入串中 识别出一个单词符号交给语法分析器。
4
《编译原理教程》习题解析
5
【解答】 (1) 编译程序可以将用高级语言编写的源程序转换成 与之在逻辑上等价的目标程序,而目标程序可以是汇编语 言程序或机器语言程序。故选A。 (2) 分多遍完成编译过程可使整个编译程序的逻辑结 构更加清晰。故选B。 (3) 构造编译程序应掌握源程序、目标语言和编译方 法这三方面内容。故选D。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
(单选题)1: 许多广为使用的语言,如Fortran、C、Pascal等,属于()。
A: 强制式语言
B: 应用式语言
C: 基于规则的语言
D: 面向对象的语言
正确答案: A
(单选题)2: 在编译方法中,动态存储分配的含义是( )。
A: 在运行阶段对源程序中的数组.变量.参数等进行分配
B: 在编译阶段对源程序中的数组.变量.参数进行分配
C: 在编译阶段对源程序中的数组.变量.参数等进行分配,在运行时这些数组.变量.参数的地址可根据需要改变
D: 其他都不正确
正确答案: A
(单选题)3: 现代多数实用编译程序所产生的目标代码都是一种可重定位的指令代码,在运行前必须借助于一个把各个目标模块,包括系统提供的库模块连接在一起,确定程序变量或常数在主存中的位置,装入内存中制定的起始地址,使之成为一个可运行的绝对指令代码的程序。
A: 重定位程序;
B: 解释程序;
C: 连接装配程序;
D: 诊断程序;
正确答案: C
(单选题)4: 语法分析应遵循()。
A: 语义规则
B: 语法规则
C: 构词规则
D: 等价变换规则
正确答案: C
(单选题)5: ()是指源程序中不符合语法或词法规则的错误,这些错误一般在词法分析或语法分析时能检测出来。
A: 语义错误
B: 语法错误
C: 短语错误
D: 短句错误
正确答案: B
(单选题)6: 在使用高级语言编程时,首先可通过编译程序发现源程序的全部和部分( )错误。
A: 语法
B: 语义
C: 语用。