2017计科01-08编译原理练习题一语义分析中间代码生成

本文主要是介绍2017计科01-08编译原理练习题一语义分析中间代码生成,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

2017计科01-08编译原理练习题一语义分析&中间代码生成

单选题

2-1中间代码生成所依据的是( C )。

A.语法规则
B.词法规则
C.语义规则
D.等价变换规则
2-2四元式之间的联系是通过( B )实现的。

A.指示器
B.临时变量
C.符号表
D.程序变量
2-3终结符具有(C )属性。

A.抽象
B.传递
C.综合
D.继承
2-4以下说法正确的是( A)。

A.语义规则中的属性有两种:综合属性与继承属性
B.终结符只有继承属性,它由词法分析器提供
C.非终结符可以有综合属性,但不能有继承属性
D.属性值在分析过程中可以进行计算,但不能传递

2-5四元式表示法的优点为( A )。

A.不便于优化处理,但便于表的更动
B.不便于优化处理,但节省存储空间
C.便于优化处理,也便于表的更动
D.便于表的更动,也节省存储空间
2-6文法符号的属性有两种,一种称(A ),另一种称为( )。

A.继承属性 综合属性
B.抽象属性 综合属性
C.传递属性 抽象属性
D.抽象属性 派生属性
2-7用( C)可以把a:=b+c翻译成四元式序列。

A.语法规则
B.词法规则
C.语义规则
D.等价变换规则
2-8有文法G及其语法制导翻译如下所示( 语义规则中的*和+分别是常规意义下的算术运算符)

E→E1∧ T { E.val = E1.val * T.val }
E→T { E.val =T.val }
T→T1# n { T.val = T1.val + n.val }
T→ n {T.val = n.val }

则分析句子 2 ∧ 3 # 4其值为( C)。

A.10
B.34
C.14
D.54
2-9使用( A)可以定义一个程序的意义。

A.语义规则
B.词法规则
C.产生规则
D.词法规则
2-10下面(A)语法制导翻译中,不采用拉链—回填技术。

A.赋值语句
B.布尔表达式
C.条件语句
D.循环语句
2-11有文法G及其语法制导翻译如下所示( 语义规则中的*和+分别是常规意义下的算术运算符):

E→E1 ∧ T {E.val = E1.val * T.val}
E→T {E.val = T.val}
T→T1# n {T.val = T1.val + n.val }
T→ n {T.val = n.val}

则分析句子3 ∧ 3 # 4其值为(B)。

A.10
B.21
C.14
D.24

多选题

3-1已知表达式a+b∗c+(d+e)/f, 翻译成三地址代码序列,假设从100开始编号,选择合适的选项将下表补充完整。
在这里插入图片描述
A.T1:=b*c
B.T2:=a+T1
C.T3:=d+e
D.T4:=T3/f
E.T5:=T2+T4
F.T2:=d+e
G.T3:=T2/f
H.T4:=a+T1
I.T5:=T4+T3
答案: ABCDE

3-2将下列语句采用“拉链-回填”的思想翻译成四元式序列,选择合适的选项将下表补充完整。

while a<b and c<d do

if x>0 then x:=y+z else x:=y-z

在这里插入图片描述
A.(j<,a,b,102)
B.(j, _ ,, 112)
C.(j<,c,d,104)
D.(j,
,,112)
E.(j>,x,0,106)
F.(j,
,,109)
G.(+,y,z,T1)
H.(:=,T1,
,x)
I.(j,,,100)
J.(-,y,z,T2)
K.(:=,T2,,x)
L.(j,
,,100)
M…
N.(j,
,,102)
O.(j,
,,104)
P.(j,
,,111)
Q.(j,
,_,108)
R.(:=,T1,x,100)
S.(:=,T2,x,100)
T.(-,z,y,T2)
U.(+,z,y,T1)
V.(j<,a,b,106)
W.(j<,c,d,106)

答案: ABCDEFGHIJKLM

3-3已知表达式(a+b)/(a-b)-a-(a+b∗c),翻译成三地址代码序列,假设从100开始编号,选择合适的选项将下表补充完整。

在这里插入图片描述

A.T1:=a+b
B.T2:=a-b
C.T3:=T1/T2
D.T4:=T3-a
E.T5:=b * c
F.T6:=a+T5
G.T7:=T4-T6
H.T4:=b*c
I.T5:=a+T4
J.T6:=T3-a
K.T7:=T6-T5
L.T1:=a-b
M.T2:=a+b
N.T3:=T2/T1

答案: ABCDEFG

这篇关于2017计科01-08编译原理练习题一语义分析中间代码生成的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/253376

相关文章

ShardingProxy读写分离之原理、配置与实践过程

《ShardingProxy读写分离之原理、配置与实践过程》ShardingProxy是ApacheShardingSphere的数据库中间件,通过三层架构实现读写分离,解决高并发场景下数据库性能瓶... 目录一、ShardingProxy技术定位与读写分离核心价值1.1 技术定位1.2 读写分离核心价值二

深度解析Python中递归下降解析器的原理与实现

《深度解析Python中递归下降解析器的原理与实现》在编译器设计、配置文件处理和数据转换领域,递归下降解析器是最常用且最直观的解析技术,本文将详细介绍递归下降解析器的原理与实现,感兴趣的小伙伴可以跟随... 目录引言:解析器的核心价值一、递归下降解析器基础1.1 核心概念解析1.2 基本架构二、简单算术表达

深入浅出Spring中的@Autowired自动注入的工作原理及实践应用

《深入浅出Spring中的@Autowired自动注入的工作原理及实践应用》在Spring框架的学习旅程中,@Autowired无疑是一个高频出现却又让初学者头疼的注解,它看似简单,却蕴含着Sprin... 目录深入浅出Spring中的@Autowired:自动注入的奥秘什么是依赖注入?@Autowired

从原理到实战解析Java Stream 的并行流性能优化

《从原理到实战解析JavaStream的并行流性能优化》本文给大家介绍JavaStream的并行流性能优化:从原理到实战的全攻略,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的... 目录一、并行流的核心原理与适用场景二、性能优化的核心策略1. 合理设置并行度:打破默认阈值2. 避免装箱

spring AMQP代码生成rabbitmq的exchange and queue教程

《springAMQP代码生成rabbitmq的exchangeandqueue教程》使用SpringAMQP代码直接创建RabbitMQexchange和queue,并确保绑定关系自动成立,简... 目录spring AMQP代码生成rabbitmq的exchange and 编程queue执行结果总结s

Python中的filter() 函数的工作原理及应用技巧

《Python中的filter()函数的工作原理及应用技巧》Python的filter()函数用于筛选序列元素,返回迭代器,适合函数式编程,相比列表推导式,内存更优,尤其适用于大数据集,结合lamb... 目录前言一、基本概念基本语法二、使用方式1. 使用 lambda 函数2. 使用普通函数3. 使用 N

MyBatis-Plus 与 Spring Boot 集成原理实战示例

《MyBatis-Plus与SpringBoot集成原理实战示例》MyBatis-Plus通过自动配置与核心组件集成SpringBoot实现零配置,提供分页、逻辑删除等插件化功能,增强MyBa... 目录 一、MyBATis-Plus 简介 二、集成方式(Spring Boot)1. 引入依赖 三、核心机制

redis和redission分布式锁原理及区别说明

《redis和redission分布式锁原理及区别说明》文章对比了synchronized、乐观锁、Redis分布式锁及Redission锁的原理与区别,指出在集群环境下synchronized失效,... 目录Redis和redission分布式锁原理及区别1、有的同伴想到了synchronized关键字

Android 缓存日志Logcat导出与分析最佳实践

《Android缓存日志Logcat导出与分析最佳实践》本文全面介绍AndroidLogcat缓存日志的导出与分析方法,涵盖按进程、缓冲区类型及日志级别过滤,自动化工具使用,常见问题解决方案和最佳实... 目录android 缓存日志(Logcat)导出与分析全攻略为什么要导出缓存日志?按需过滤导出1. 按

Linux中的HTTPS协议原理分析

《Linux中的HTTPS协议原理分析》文章解释了HTTPS的必要性:HTTP明文传输易被篡改和劫持,HTTPS通过非对称加密协商对称密钥、CA证书认证和混合加密机制,有效防范中间人攻击,保障通信安全... 目录一、什么是加密和解密?二、为什么需要加密?三、常见的加密方式3.1 对称加密3.2非对称加密四、