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

相关文章

python使用Akshare与Streamlit实现股票估值分析教程(图文代码)

《python使用Akshare与Streamlit实现股票估值分析教程(图文代码)》入职测试中的一道题,要求:从Akshare下载某一个股票近十年的财务报表包括,资产负债表,利润表,现金流量表,保存... 目录一、前言二、核心知识点梳理1、Akshare数据获取2、Pandas数据处理3、Matplotl

python panda库从基础到高级操作分析

《pythonpanda库从基础到高级操作分析》本文介绍了Pandas库的核心功能,包括处理结构化数据的Series和DataFrame数据结构,数据读取、清洗、分组聚合、合并、时间序列分析及大数据... 目录1. Pandas 概述2. 基本操作:数据读取与查看3. 索引操作:精准定位数据4. Group

MySQL中EXISTS与IN用法使用与对比分析

《MySQL中EXISTS与IN用法使用与对比分析》在MySQL中,EXISTS和IN都用于子查询中根据另一个查询的结果来过滤主查询的记录,本文将基于工作原理、效率和应用场景进行全面对比... 目录一、基本用法详解1. IN 运算符2. EXISTS 运算符二、EXISTS 与 IN 的选择策略三、性能对比

MySQL 内存使用率常用分析语句

《MySQL内存使用率常用分析语句》用户整理了MySQL内存占用过高的分析方法,涵盖操作系统层确认及数据库层bufferpool、内存模块差值、线程状态、performance_schema性能数据... 目录一、 OS层二、 DB层1. 全局情况2. 内存占js用详情最近连续遇到mysql内存占用过高导致

深度解析Nginx日志分析与499状态码问题解决

《深度解析Nginx日志分析与499状态码问题解决》在Web服务器运维和性能优化过程中,Nginx日志是排查问题的重要依据,本文将围绕Nginx日志分析、499状态码的成因、排查方法及解决方案展开讨论... 目录前言1. Nginx日志基础1.1 Nginx日志存放位置1.2 Nginx日志格式2. 499

Spring Security 单点登录与自动登录机制的实现原理

《SpringSecurity单点登录与自动登录机制的实现原理》本文探讨SpringSecurity实现单点登录(SSO)与自动登录机制,涵盖JWT跨系统认证、RememberMe持久化Token... 目录一、核心概念解析1.1 单点登录(SSO)1.2 自动登录(Remember Me)二、代码分析三、

Go语言编译环境设置教程

《Go语言编译环境设置教程》Go语言支持高并发(goroutine)、自动垃圾回收,编译为跨平台二进制文件,云原生兼容且社区活跃,开发便捷,内置测试与vet工具辅助检测错误,依赖模块化管理,提升开发效... 目录Go语言优势下载 Go  配置编译环境配置 GOPROXYIDE 设置(VS Code)一些基本

在MySQL中实现冷热数据分离的方法及使用场景底层原理解析

《在MySQL中实现冷热数据分离的方法及使用场景底层原理解析》MySQL冷热数据分离通过分表/分区策略、数据归档和索引优化,将频繁访问的热数据与冷数据分开存储,提升查询效率并降低存储成本,适用于高并发... 目录实现冷热数据分离1. 分表策略2. 使用分区表3. 数据归档与迁移在mysql中实现冷热数据分

Olingo分析和实践之EDM 辅助序列化器详解(最佳实践)

《Olingo分析和实践之EDM辅助序列化器详解(最佳实践)》EDM辅助序列化器是ApacheOlingoOData框架中无需完整EDM模型的智能序列化工具,通过运行时类型推断实现灵活数据转换,适用... 目录概念与定义什么是 EDM 辅助序列化器?核心概念设计目标核心特点1. EDM 信息可选2. 智能类

Olingo分析和实践之OData框架核心组件初始化(关键步骤)

《Olingo分析和实践之OData框架核心组件初始化(关键步骤)》ODataSpringBootService通过初始化OData实例和服务元数据,构建框架核心能力与数据模型结构,实现序列化、URI... 目录概述第一步:OData实例创建1.1 OData.newInstance() 详细分析1.1.1