编译原理试题库 1.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
编译原理试题库 1

一、填空题(共30分,30个空,每空1分) 1、典型高级程序设计语言编译系统的工作过程一般分为六个阶段,即词法分析、语法分析、语义分析、中间代码生成、 代码优化 、目标代码生成。编译阶段的两种组合方式是 前后端 组合法和按遍组合法,这两种组合方式的主要参考因素都是 源语言和目标机器 的特征。 2、Chomsky将文法按其所表示语言的表达能力,由高往低分为四类:0型,1型,2型,3型文法。其中,2型文法也称 上下文无关文法 ,它的所有规则α→β 都满足:α∈VN ,β∈ ((VN∪VT) *且 β长度大于等于α ,仅当β= ε时例外。 3、现代编译系统多采用 语法制导翻译 方法,即在语法分析过程中根据各个规则所相联的 语义动作 或所对应的语义子程序进行翻译的办法。该方法使用 属性文法 为工具来说明程序设计语言的语义。 4、构造与NFA M等价的正规文法G的方法如下:(1)对转换函数f(A,a)=B或f(A,ε)=B,改成形如 A→aB 或 A→B 的产生式;(2)对可识别终态Z,增加一个产生式: Z→ε 。 5、代码生成要考虑的主要问题:充分利用 寄存器 的问题、选择 计算机指令系统 的问题、选择 计算次序 的问题。 6、设有穷自动机M=(K,(,f,S,Z),若当M为 NFA 时,满足z0∈f(S,α)且z0∈Z,或当M为 DFA 时,满足f(S,α)=P∈Z,则称符号串α∈(*可被M所 接受 。 7、符号表中每一项对应一个多元组。符号表项的组织可分为 线性 组织、 排列 组织、 散列 组织等。 8、对于A∈(VN 定义A的后续符号集:FOLLOW(A)={a|S=*uAβ, a∈VT,且a∈FIRST(β) ,u∈VT*,β∈V+;若β=*ε ,则#∈FOLLOW(A)。也可以定义为:FOLLOW(A)={a|S=*…Aa…,a∈VT}。若有S=*…A ,则规定#∈FOLLOW(A)。 9、基本块的定义:一个基本块是指程序中一个 顺序 执行的语句序列,其中只有一个入口和一个出口。入口是程序第一个语句或转移语句的目标语句,或转移语句的后继第一个语句。出口是程序 最后1个语句 或转移语句。在基本块范围内的优化称为 局部优化 。 10、预测分析器由预测分析表、先进后出栈(用来存放分析过程的语法符号)和 预测分析程序 三部分组成。其中预测分析表是一个二维矩阵,其形式为M[A,a],其中A∈VN,a∈VT或#。若有产生式A→α,使得a∈ SELECT(A→α) ,则将A→α填入M[A,a]中。(书写时,通常省略规则左部,只填→α)。对所有 没有值 的M[A,a]标记为出错。 二、简述题(共20分,4个小题,每小题5分) 1、简述将NFA转换为最小化DFA的步骤。 第一步:将NFA确定化。用造表法将NFA确定化过程如下: (0)表的第0行和第0列作标识行列的值。 (1) 将ε-closure(I)作为表中第1行第1列。 (2) 假定(={a1,a2,...an},设第i行第一列已确定状态集为I,则置该行第i列为Iai,如Iai未曾在任何行第一列出现过,则将Iai加入下一空行i+1的第一列,并在第0列标记为Ti+1。 (3) 反复重复第(1) 步,直至无新状态出现为止。 (4) 重新命名新状态。(3分) 第二步:将DFA最小化。DFA最小化具体过程:用子集分割法将不含多余状态的DFA分成一些不相交的子集,使得任何两个不同的子集中的状态都是可区别的,而相同子集中状态是等价的。分割时,首先将DFA状态分成终态子集和非终态子集,再根据输出弧所达到状态的性质逐步细分。(2分) 2、简述静态存储分配、栈式存储分配和堆式存储分配的特点和主要用途。 (1)静态存储分配的特点:编译时刻确定存储位置;访问效率高。主要用途:子程序的目标代码段、全局数据目标(全局变量)。(2分) (2)栈(Stack)式存储分配的特点:嵌套调用次序、先进后出、生存期限于本次调用、自动释放。用途:过程的局部环境、活动记录。(1分) (3)堆(Heap)式存储分配的特点:将内存空间分为若干块,根据用户要求分配;无法满足时,调用无用单元收集程序将被释放的块收集起来重新分配。主要用途:用于动态数据结构:存储空间的动态分配和释放。(2分) 3、以表达式 a:=b*(-c)+b/(-d)为例,简述常用的三种中间代码表示形式 3、(1)逆波兰式:abc-*bd-/+:= 。(1分) (2)三元式:①(- , c , _ ) ②(* , b ,① ) ③(- , d ,

文档评论(0)

xcs88858 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

版权声明书
用户编号:8130065136000003

1亿VIP精品文档

相关文档