编译原理 期末考试复习题

本文是编译原理期末考试复习题,包含判断、单选、应用和简述四类题目。判断题涉及编译方式、编译程序实现语言等;单选题考查语法分析器功能、文法类型等;应用题要求消除文法左递归并构造分析表;简述题探讨编译技术的应用,如开发编译器等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

期末考试复习题

判断

  1. 高级程序设计语言的代码在机器上运行可通过编译方式或解释方式实现,编译方式优于解释方式。错误

  2. 计算机只能识别机器代码,所以只能用机器语言实现编译程序。错误

  3. 不是所有句型都有规范推导。正确

  4. 递归文法的语言是无穷集。正确

  5. “遍”是对源程序或源程序的中间结果从头到尾扫描一次,并做有关加工处理,生成新的中间结果或目标程序。一个编译程序所分遍数越多越好。错误

  6. 过程的活动生存期是指从该过程体第一步操作到最后一步操作之间的操作序。两个过程的活动生存期可以重叠。错误

  7. 算符优先函数,如果有f(a)>g(b),则必有a的优先级高于b,且b的优先级低于a。错误

  8. 符号表分为两大栏,名字栏和信息栏,其中名字栏是主栏。正确

  9. 中间代码优化的目的是生成更有效的目标代码,为了追求高效的目标代码,优化应不计代价。错误

  10. 正规表达式与正规文法是不同的形式化描述工具,它们之间不存在等价性。错误

单选

  1. 语法分析器的主要功能是(B
    A 从源程序中识别出一个个的单词
    B 从单词流中识别出各类语法单位,并判断输入串是否符合语法规则
    C 将输入串翻译成一定形式的中间代码
    D 解释什么是语法

  2. 乔姆斯基把文法分为四种类型,即0型、1型、2型、3型,其中3型文法是:(B
    A 上下文无关文法
    B 正规文法
    C 属性文法
    D 算符优先文法

  3. 以下关于DFA描述错误的是(B
    A 初态唯一
    B 终态唯一
    C 状态转换函数是单值映射
    D 不含标记有空串的转换弧

  4. C语言,允许递归过程,还允许用户动态地申请和释放存储空间,应采用以下哪种存储分配策略(D
    A 静态分配策略
    B 栈式分配策略
    C 堆式分配策略
    D 都有

  5. 令文法G[S]为:
    S->aAbBd
    A->Ab| a
    B->c | d
    aabbcd是文法G的一个句子,指出这个句子的句柄是(A
    A a
    B ab
    C c
    D d

  6. 如果文法无二义性,则与最右推导互为逆过程的是(D)
    A 最右归约
    B 规范推导
    C 最左推导
    D 规范归约

  7. 活动记录中静态链的作用是(D
    A 建立本过程和主调过程间的联系
    B 表明过程的嵌套层次
    C 用来指向静态数据区
    D用以实现对非局部名字的访问

  8. LR分析器的核心部分是一张分析表,这张表包括(C
    A 预测分析表、状态转换表
    B 优先关系矩阵、 动作表
    C 动作表 、状态转换表
    D 内情向量表、符号表

  9. 表达式a*b-(c+d)的逆波兰式是(B
    A abcd+ -*
    B ab*cd+ -
    C abcd*+ -
    D abcd+*-
    单选题 (3 满分)

  10. 现有文法G[S]: S—>a |b | (T)

T —>S T’

T’->*ST’|ɛ

则FOLLOW(S)为:(C)

A {#}
B{# , )}
C {# , , )}
D {
, )}

应用

  1. 文法 G[D]: D→TL T→i|r L→L,x|x 消除该文法的左递归; 判断改动后文法是否为LL(1)文法; 若是,则为其构造LL(1)分析表。

D→TLD\to TLDTL T→i∣rT\to i|rTir L→L,x∣xL\to L,x|xLL,xx

  1. 文法中含有直接左递归
    消除左递归后:D→TLD\to TLDTL T→i∣rT\to i|rTir L→xL′L\to xL'LxL L′→,xL′∣εL'\to ,xL'|\varepsilonL,xLε

  2. 构造FIRST集和FOLLOW集

XXXFIRST(X)FIRST(X)FIRST(X)FOLLOW(X)FOLLOW(X)FOLLOW(X)
DDD{i,r}\{i,r\}{i,r}{#}\{\#\}{#}
TTT{i,r}\{i,r\}{i,r}{x}\{x\}{x}
LLL{x}\{x\}{x}{#}\{\#\}{#}
L′L'L{,,ε}\{,,\varepsilon\}{,,ε}{#}\{\#\}{#}

该文法是LL(1)文法。
3. 构造LL(1)分析表

iiirrr,,,xxx#\##
DDDD→TLD\to TLDTLD→TLD\to TLDTL
TTTT→iT\to iTiT→rT\to rTr
LLLL→xL′L\to xL'LxL
L′L'LL′→,xL′L'\to ,xL'L,xLL′→εL'\to\varepsilonLε

简述

  1. 请谈一谈编译技术有哪些应用
    • 最直接的使用就是开发编译器,是机器能更好地识别高级语言;
    • 基于编译技术的可信赖计算方法,基于编译技术的协议解析方法;
    • 移动领域利用交叉编译技术去跨平台,将具备更强的竞争优势
《编译》——复习资料,可适用于课程学习资料、期末复习资料、自主学习资料等等,复习资料共218页,内容丰富,干货十足! 主要内容包括: 一、概述 1 1.1 课程介绍 1 1.2 编译过程 3 1.3 高级语言程序简介 11 二、程序语言概论 14 2.1 程序语言的定义 14 2.2 文法的形式化定义和分类 18 2.3 文法和语言 22 2.4 语法分析树 29 三、词法分析_1 33 3.1 词法分析概述 33 3.2 词法分析程序的设计 38 3.3 正规式与自动机 41 3.3.1 正规式与正规集 41 3.3.2 确定有限自动机(DFA) 44 3.3.3 非确定有限自动机(NFA) 49 3.4 单元测试 51 四、词汇分析_2 52 4.1正则式和有限自动机的等价 52 五、词法分析_3 59 5.1 DFA的化简 59 六、词法分析_4 62 6.1 词法分析器的自动生成 62 6.2 词法分析程序实现实例 64 七、语法分析—自上而下分析_1 71 7.1 词法分析简介 71 7.2 自顶向下分析简介 73 7.3 消除左递归和回溯 76 八、语法分析—自上而下分析_2 80 8.1 LL(1)分析法 80 8.2 FIRST集和FOLLOW集的构造 82 8.3 单元测试 85 九、语法分析—自上而下分析_3 86 9.1 LL(1)分析表的构造 86 9.2 递归子程序的原理 89 9.3 单元测试 95 十、语法分析—自下而上分析_1 96 10.1 自下而上分析方法的基本思想 96 10.2 分析树与规范规约 99 10.3 符号栈的使用 103 10.4 单元测试 105 十一、语法分析—自下而上分析_2 106 11.1 算符优先文法 106 11.2 优先表构造 109 11.3 算符优先分析算法 112 10.4 单元测试 115 十二、语法分析—自下而上分析_3 116 12.1 LR分析器 116 12.2 LR分析过程 119 12.3 单元测试 132 十三、语法分析—自下而上分析_4 133 13.1 构造识别前缀的DFA 133 13.2 LR(0)项目集规范族构造 140 13.3 由DFA构造LR(0)分析表 146 13.4 单元测试 150 十六、属性文法和语法翻译制导 151 16.1 L-属性文法和自顶向下翻译 151 16.2 自下而上计算继承属性 159 十七、语义分析和中间代码产生_1 166 17.1 语义分析的任务 166 17.2 中间代码的生成 168 17.3 算术表达式和赋值语句 175 17.4 单元测试 178 十八、语义分析和中间代码产生_2 179 18.1 布尔表达式的作用和文法描述 179 18.2 做控制用布尔表达式的翻译(回填) 181 18.3 控制流语句的翻译 186 18.4 控制流语句的翻译(回填) 189 十九、代码优化_1 194 19.1 什么是代码优化 194 19.2 基本块及流图 199 19.3 单元测试 202 二十、代码优化_2 203 20.1 基本块的DAG表示及其作用 203 二十一、重要知识点 213 1. 考试内容及分数分布 213 2. 名词解释 214 3. 简答题 215 4. 结语 216
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值