编译原理填空
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1.编译程序的工作过程一般可以划分为
词法分析_、_语法分析_、_语义分析、_中间代码生成、_代码优化_等几个基本阶段,同时还会伴有表格处理和出错处理(6分)。
2. 在目标代码生成阶段,符号表是地址分配的依据。(2分)。
3. 符号表的数据结构可以是无序符号表、有序符号表、栈式符号表。
4. 词法分析阶段的错误主要是单词拼写错误,可通过最小距离匹配的办法纠正错误。
5. 在大部分现有编译中采用的方案主要有两种:动态分配方案和
静态分配方案。
1.编译程序与具体的机器无关,与具体的语言有关。
2.SLR(1)分析法中,L的含义是自左向右进行分析,R含义是采用最右推导的逆过程,S含义是简单的,“1”的含义是向貌似句柄的符号串的查看一个输入符号。
4.确定的有穷自动机是一个五元组,通常表示为M(Q,∑,t,q0,F)。
5.在大部分现有编译中采用的方案主要有两种:动态分配方案和___静态____分配方案。
6.假定G是一个文法,S是它的开始符号,如果S * α,则称_α__是一个句型,仅含终结符号的句型是一个句子。文法G所产生的句子的全体是一个语言,将它记为L(G)。
1.程序的翻译方式有两种,分别是_编译方式_和_解释方式_。
2.字的前缀是指该字的任意首部。(2分)
3.LR(1)分析法中,L的含义是自左向右进行分析,R含义是采用最右推导的逆过程-最左归约,“1”的含义是向貌似句柄的符号串后查看一个输入符号。
4.编译过程中,常见的中间语言形式有三元式、逆波兰式和四元式。
5.程序的可再入性指的是:当程序在执行时,可以_随时中断__它的执行,也可随时_执行进程__恢复其原来的_执行进程_;而且可以在_中断时间里_,又从该程序的_头上开始一个新的执行过程。
1. 编译程序工作过程中,第一段输入是源程序,最后阶段的输出为目标程序。
2.若二个正规式所表示的正规集相同,则认为二者是等价的(2分)。
3. 符号表中名字的有关信息在词法分析和语法语义分析过程中陆续填入。
4. 自顶向下语法分析方法的基本思想是:从识别符号出发,利用文法的规则不断建立直接推导,试图构造一个推导序列,最终由它推导出与输入符号串的符号串。
5. 堆式动态分配策略允许用户动态的申请和释放存储空间存储。。
6. 语法树代表推导过程,分析树代表归约过程。
7.在优化中,可把循环中的不变运算提到循环外面去,这种方法称为代码外提。
1 最左推导是指每次都对句型中的最左非终结符进行扩展。
2. 确定有限自动机DFA是NFA 的一个特例。(2分)。
3. 自顶向下语法分析方法的基本思想是:从识别符号出发,利用文法的规则不断建立直接推导,试图构造一个推导序列,最终由它推导出与输入符号串的符号串。
4. 确定的有穷自动机是一个五元组,通常表示为M(Q,∑,t,q0,F)。
5. 一个字集是正规的,当且仅当它可由DFA(NFA)所识别。
6.文法中的终结符和非终结符的交集是空集。词法分析器交给语法分析器的文法符号一定是终结符,它一定只出现在产生式的右部。
7 目标程序运行的动态分配策略中,含有栈式和堆式分配策略。
1.自底向上语法分析方法的基本思想是:从待输入的符号串开始,利用文法的规则步步向上进行归约,试图归约到文法的识别符号。
2. 若源程序使用高级语言编写的,目标程序是机器语言程序,则其翻译程序称为编译程序(2分)。
2. 编译程序是指将源程序程序翻译成目标程序的程序。
3. 自顶向下语法分析方法的基本思想是:从识别符号出发,利用文法的规则不断建立直接推导推导,试图构造一个推导序列,最终由它推导出与输入符号串的符号串。
4. 编译过程通常可分为5个阶段,分别是词法分析、语法分析、语义分析、代码优化和目标代码生成。
5. 优化就是对程序进行各种等价变换,使之能生成更有效的目标代码。
1. 自下而上分析法采用移进、归约、错误处理、接受等四种操作。
2. 采用自上而下语法分析时,必须消除文法的左递归(2分)。
3. 已知文法G[E]:
E→T│E+T│E-T
T→F│T*F│T/F
F→(E)│i
该文法的开始符号是 E ,终结符号集合V T是+、-、*、/、(、)、i ,非终结符号集合V N是E、T、F。
4. 扫描器的任务是从左到右一个一个地对源程序进行扫描,产生一个一个的具有独立语法意义的单词。
5. 优化就是对程序进行各种等价变换,使之能生成更有效的目标代码。
6. A→α·称为归约项目;对文法开始符S′→α·为接受项目;若a为终结符,则称A→α·aβ为移进项目;若B为非终结符,则称A→α·aβ为待约项目。
1.编译程序的工作过程一般可以划分为_词法分析_、_语法分析_、_语义分析、_中间代码生成、_代码优化__等几个基本阶段,同时还会伴有表格处理和出错处理。
2.文法G产生的所有句子的全体是该文法描述的语言。
3.来自中间代码的代码生成涉及了两个标准技术:宏扩展和静态模拟。_宏扩展_涉及到用一系列等效的目标代码指令代替每一种中间代码指令。
4.为文法的每一个规则配备的计算属性的计算规则,称为语义规则。
1. 假定G是一个文法,S是它的开始符号,如果S * α,则称α是一个句型,仅含终结符号的句型是一个句子。文法G所产生的句子的全体是一个语言,将它记为L(G)。
2. 乔姆斯基定义的四种形式语言文法分别为:0型文法(又称短语结构文法)、1型文法(又称上下文有关文法)、2型文法(又称上下文无关文法)、3型文法(又称正则文法)。
3. 自顶向下语法分析方法的基本思想是:从识别符号出发,利用文法的规则不断建立直接推导推导,试图构造一个推导序列,最终由它推导出与输入符号串相同的符号串。
1. 如果在一个文法中存在某个句子,它有二个以上得最左(最右)推导,也就是说,若该句子对应两棵不同的语法树,则这个文法是二义性文法。
2. 编译方式与解释方式的根本区别在于是否生成目标代码。(2分)
3. LL(1)分析法中,第一个L的含义是从左往右,第二个L含义是每次进行最左推导,“1”的含义是向输入串中查看一个输入符号。
4. 自顶向下语法分析方法会遇到的主要问题有左递归和回溯。
5. 符号表的数据结构可以是线性符号表、树结构、散列表。
6. 一个字集是正规的,当且仅当它可由DFA(NFA)所识别。
1.中间代码有逆波兰式、三元式样、四元式、树形表示等形式,生成中间代码主要是为了使代码优化及目标程序便于移植。(6分)。
2. 文法G产生的句子的全体是该文法描述的语言(2分)。
3. 在一个基本块内,可实行3种优化方法,即合并已知量、删除无用赋值、