《编译原理与技术》期末考试 (综合大作业)

一、单项选择题

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 如下图所示。

(1)(9 分)求出 N 的最小 DFA D

2)(6 分)给出 N 所识别语言的正规式 r

2、设文法 GS→aA

A→Abc | c

1)(9 分)拓广该文法并构造基于 LR(0)项目的、能识别其所有活前缀的 DFA

2)(6 分)该文法是否是 LR0)文法?是否为 SLR(1)文法?为什么?

点击关注,发消息

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 12
    评论
编译原理期末试题CSND包括以下几个方面的内容: 首先,试题可能会涉及到编译原理的基础知识,如编译器的基本原理、编译器的工作流程、编译器前端和后端的任务等。学生需要了解编译器的整体架构和各个组成部分之间的关系。 其次,试题可能会涉及到词法分析和语法分析的知识。学生需要了解有限自动机和正则表达式的基本概念,并能够使用它们来设计和实现一个简单的词法分析器。同时,学生还需要了解语法分析的方法,如LL(1)文法和LR(1)文法,并能够使用自顶向下或自底向上的方法来进行语法分析。 再次,试题可能会涉及到语义分析和中间代码生成的知识。学生需要了解语义分析的任务和方法,如变量的声明和作用域、类型检查和类型转换等,并能够设计和实现一个简单的语义分析器。同时,学生还需要了解中间代码的表示和生成方法,如四元式和三地址码,并能够将源代码转化为中间代码。 最后,试题可能会涉及到优化和目标代码生成的知识。学生需要了解常见的优化技术,如常量传播、死代码消除和循环展开等,并能够应用这些技术对中间代码进行优化。同时,学生还需要了解目标代码的表示和生成方法,如基本块和流图,并能够将中间代码转化为目标代码。 总之,编译原理期末试题CSND的考察范围相对广泛,涉及到了编译器的各个方面的知识和技术。学生需要充分理解并掌握这些知识,通过理论和实践的结合来解答试题。同时,学生还需要具备分析和解决问题的能力,能够灵活运用所学知识解决实际问题。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

m0_70752559

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值