学习中心/函授站
姓 名 学 号
西安电子科技大学网络与继续教育学院
2023 学年下学期
《编译原理与技术》期末考试试题
(综合大作业)
题号 一 二 三 四 总分
题分 20 10 40 30
得分
考试说明:
1、大作业试题公布时间:2023 年 11 月 3 日;
2、考试必须独立完成,如发现抄袭、雷同均按零分计;
3、答案须用《西安电子科技大学网络与继续教育学院 2023 秋期末考试答题纸》(个 人专属答题纸)手写完成,要求字迹工整、卷面干净、整齐;
4、在线上传时间:2023 年 11 月 3 日至 2023 年 11 月 13 日在线上传大作业答卷; 5、拍照要求完整、清晰,一张图片对应一张个人专属答题纸(A4 纸),正确上传。
一、单项选择题(每小题 2 分, 共 20 分)
1、程序设计语言可划分为低级语言和高级语言两大类。与高级语言相比,用低级语言 开发的程序,其( )。
A .运行效率低,开发效率低 B .运行效率低,开发效率高
C .运行效率高,开发效率低 D .运行效率高,开发效率高
2、编译过程中 ,( )阶段不是必需的。
A .语法分析 B .语义分析 C .代码优化 D . 目标代码生成
3、对于正规式(a|b)*abb,属于其所表示正规集的是( )。
A .aaabbb B .abab C .bbbaaa D .ababb
4、有限状态自动机可以识别的语言为( )。
A .上下文有关语言 B .上下文无关语言
C .短语文法定义的语言 D .正规文法定义的语言
5 、一个句型中的最左( )称为该句型的句柄。
A .短语 B .直接短语 C .非终结符号 D .终结符号
6、( )是与规范归约(最左归约)互逆的一个过程。
A .最左推导 B .最右推导 C .词法分析 D .语义分析
7、与逆波兰式 ab+c*d+对应的中缀表达式是( )。
A .a+b+c*d B .(a+b)* c+d C .(a+b)* (c+d) D .a+b*c+d
8、在表达式 x:=y+1 中,( )作为左值出现(其中,“:= ”表示赋值)。
A .x B .y C .1 D .y+1
9、为数组声明 a:array[1..4, 0..3]中 a 分配的存储空间的首地址为 base_a ,且每个数组元 素占据一个存储单元。若以行为主存放,数组元素 a[3,1]在存储空间中相对 base_a 的偏移量
是( )。
A .8 B .9 C .10 D .11
10、用来描述控制进入和离开活动方式的树结构被称为( )。
A .语法树 B .分析树 C .活动树 D .嵌套关系树
二、填空题(每空 2 分, 共 10 分)
1、Yacc 常用于编译的 阶段。
2、CFG 的定义包含有终结符集合、非终结符集合、 和 。
3、参数传递的方法有值调用、 、复写恢复、换名调用。其中,C 语言中 void swap(int *a, int *b)的参数传递方式是 。
三、简答题(每小题 10 分, 共 40 分)
1、为什么在一般情况下用正规式而不用 CFG 来描述语言的词法?
2、请简要说明进行自上而下的语法分析时,文法中为什么不能有左递归和公共左因子。 3、举例说明下述文法 G 是二义的。有哪些方法可以消除文法的二义性。
4、给出语句 if (b>0) then while (a>b) do a:=a-1 else a:=a+b;的中间代码序列。 五、综合题(每小题 15 分, 共 30 分)
1、有 NFA N 如下图所示。
b a
2 a 3
(1)(9 分) 求出 N 的最小 DFA D;
(2)(6 分) 给出 N 所识别语言的正规式 r。
2、设文法 G:S→aA
A→Abc | c
(1)(9 分)拓广该文法并构造基于 LR(0)项目的、 能识别其所有活前缀的 DFA。 (2)(6 分)该文法是否是 LR(0)文法? 是否为 SLR(1)文法?为什么?
姓 名 学 号
西安电子科技大学网络与继续教育学院
2023 学年下学期
《编译原理与技术》期末考试试题
(综合大作业)
题号 一 二 三 四 总分
题分 20 10 40 30
得分
考试说明:
1、大作业试题公布时间:2023 年 11 月 3 日;
2、考试必须独立完成,如发现抄袭、雷同均按零分计;
3、答案须用《西安电子科技大学网络与继续教育学院 2023 秋期末考试答题纸》(个 人专属答题纸)手写完成,要求字迹工整、卷面干净、整齐;
4、在线上传时间:2023 年 11 月 3 日至 2023 年 11 月 13 日在线上传大作业答卷; 5、拍照要求完整、清晰,一张图片对应一张个人专属答题纸(A4 纸),正确上传。
一、单项选择题(每小题 2 分, 共 20 分)
1、程序设计语言可划分为低级语言和高级语言两大类。与高级语言相比,用低级语言 开发的程序,其( )。
A .运行效率低,开发效率低 B .运行效率低,开发效率高
C .运行效率高,开发效率低 D .运行效率高,开发效率高
2、编译过程中 ,( )阶段不是必需的。
A .语法分析 B .语义分析 C .代码优化 D . 目标代码生成
3、对于正规式(a|b)*abb,属于其所表示正规集的是( )。
A .aaabbb B .abab C .bbbaaa D .ababb
4、有限状态自动机可以识别的语言为( )。
A .上下文有关语言 B .上下文无关语言
C .短语文法定义的语言 D .正规文法定义的语言
5 、一个句型中的最左( )称为该句型的句柄。
A .短语 B .直接短语 C .非终结符号 D .终结符号
6、( )是与规范归约(最左归约)互逆的一个过程。
A .最左推导 B .最右推导 C .词法分析 D .语义分析
7、与逆波兰式 ab+c*d+对应的中缀表达式是( )。
A .a+b+c*d B .(a+b)* c+d C .(a+b)* (c+d) D .a+b*c+d
8、在表达式 x:=y+1 中,( )作为左值出现(其中,“:= ”表示赋值)。
A .x B .y C .1 D .y+1
9、为数组声明 a:array[1..4, 0..3]中 a 分配的存储空间的首地址为 base_a ,且每个数组元 素占据一个存储单元。若以行为主存放,数组元素 a[3,1]在存储空间中相对 base_a 的偏移量
是( )。
A .8 B .9 C .10 D .11
10、用来描述控制进入和离开活动方式的树结构被称为( )。
A .语法树 B .分析树 C .活动树 D .嵌套关系树
二、填空题(每空 2 分, 共 10 分)
1、Yacc 常用于编译的 阶段。
2、CFG 的定义包含有终结符集合、非终结符集合、 和 。
3、参数传递的方法有值调用、 、复写恢复、换名调用。其中,C 语言中 void swap(int *a, int *b)的参数传递方式是 。
三、简答题(每小题 10 分, 共 40 分)
1、为什么在一般情况下用正规式而不用 CFG 来描述语言的词法?
2、请简要说明进行自上而下的语法分析时,文法中为什么不能有左递归和公共左因子。 3、举例说明下述文法 G 是二义的。有哪些方法可以消除文法的二义性。
4、给出语句 if (b>0) then while (a>b) do a:=a-1 else a:=a+b;的中间代码序列。 五、综合题(每小题 15 分, 共 30 分)
1、有 NFA N 如下图所示。
b a
2 a 3
(1)(9 分) 求出 N 的最小 DFA D;
(2)(6 分) 给出 N 所识别语言的正规式 r。
2、设文法 G:S→aA
A→Abc | c
(1)(9 分)拓广该文法并构造基于 LR(0)项目的、 能识别其所有活前缀的 DFA。 (2)(6 分)该文法是否是 LR(0)文法? 是否为 SLR(1)文法?为什么?