《编译原理与技术》期末考试

一、单选题

1、以编译方式和解释方式对高级语言源程序进行翻译时,( )。

A.编译方式不生成源程序的目标代码,解释方式生成源程序的目标代码

B.编译方式生成源程序的目标代码,解释方式不生成源程序的目标代码

C.编译方式和解释方式都生成源程序的目标代码

D.编译方式和解释方式都不生成源程序的目标代码

2、在自下而上语法分析中,LR(1)中的 L 表示( )。

A.从左到右扫描输入序列

B.最左推导

C.最左归约

D.最右推导

3、一个句型中的最左( )称为该句型的句柄。

A.短语

B.直接短语

C.非终结符号

D.终结符号

4、给定文法 A→bA|ab,( )是该文法的句子。

A.babb

B.abab

C.baab

D.bbab

5、用来描述控制进入和离开活动的树结构被称为( )。

A.语法树

B.分析树

C.活动树

D.嵌套关系树

二、填空

1、在以阶段划分的编译器中,识别单词的阶段称为________ ,识别句子结 构并将其表示成树形式的阶段称为______ ,贯穿整个编译过程的两个辅助过程 (阶段)为 ______ 和 ______ 。编译器前端生成的既接近目标语 言,又与具体机器无关的表示称为______ 。

2、将机器语言翻译成汇编语言的过程称为 ______。

3、 上 下 文 无 关 文 法 G 的 四 元 组 ( N,T,P,S 中 , T 表 示______ , P 表 示______.

4、设有二维数组 M[20,10] 以行为主存放,数组元素下标从 1 开始,每个元素占 1 个存 储单元,元素 M[8,5]相对于该数组空间首地址的偏移量为______ 。

5、在值调用参数传递方式中,参数传递是指______ 。

三、简答题

简述由正规式构造词法分析器的一般方法和过程

1、简述由正规式构造词法分析器的一般方法和过程

2、对于文法 G:

        E → E + T | T

        T → T * F | F

        F → (E)| num

请给出句型 T*(E+5)的分析树,并指出该句型中的所有短语、直接短语和句柄。

3、请给出下述表达式的后缀式与语法树。

        x := 2*(4+5)/3 - 6

4、请给出函数 foo 调用时分别采用传值调用和引用调用方式时代码的输出结果。

program main(input,output)
    procedure foo(a,b)
    begin
        a := a + 2;
        b := a * 5 - b;
    end;
begin
    x := 4; y := 7;
    foo(x, y);
    print(x,y);
end

四、计算题

1、某 NFA 的状态转换图如下表所示  (0 是初态,4 是终态)

 (1)用“子集法”把该 NFA 确定化为 DFA D;

(2)将 DFA D 最小化。

2、设有上下文无关无法G及其语法制导翻译如下(注:G中终结符id仅由单个英文字母 组成,如a, b等):

E→E1*T         {E.place=newtemp; emit(*, E1.place, T.place, E.place;}

        | T {E.place=T.place;}

T→T1-F {T.place=newtemp; emit(-, T1.place, F.place, T.place;}

        | F {T.place=F.place;}

F→id {F.place=id.name;}

(1)当 a=5、b=2、c=4 时,写出表达式 a-b*c 的结果;(*表示算术乘、-表示算术减)

(2)给出文法 G 识别活前缀的 DFA,简要说明该 DFA 的项目集中是否有冲突及冲突的 类型。

 

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 9
    评论
编译原理期末考试主要涵盖了编译原理课程所学的知识点和理论基础,以及相关的实践能力。在考试中,通常会包含选择题、填空题、简答题和编程题等不同类型的题目。 选择题考察学生对编译原理相关概念的理解和掌握程度,例如词法分析、语法分析、语义分析、中间代码生成、代码优化和目标代码生成等方面的知识。 填空题要求学生填写编译过程中的关键参数、关键步骤或关键算法的具体数值或表达式,考察学生对具体细节的掌握情况。 简答题会提出一些编译原理的基本问题,要求学生用自己的语言进行解释和回答,主要考察学生对编译原理原理和概念的理解和应用能力。 编程题是考察学生对编译原理知识的实际应用能力,通常要求学生编写一个简单的编译器或解释器的某个功能模块,完成对源代码的词法分析、语法分析、语义分析等操作。 在备考阶段,需要重点复习编译原理的基本概念、算法和原理,练习做一些相关的习题和编程实践,熟悉不同类型的题目形式和解题思路。此外,深入理解编译原理原理和实践,尝试设计和实现一个简单的编译器,也有助于加深对知识的理解和应用能力的提升。 总之,编译原理期末考试是对学生在编译原理课程上所学的理论和实践能力的检验,通过复习和实践的准备,能更好地应对考试的各个环节,取得好成绩。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

m0_70752559

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

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

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

打赏作者

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

抵扣说明:

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

余额充值