编译原理(第3版) 清华大学出版社 黄贤英等人著作 部分课后习题答案

大家好,我是小黄鸭,平时作业,记录一下,方便考试复习

第一章

  1. 第一题 解释下列术语
    1. 翻译程序:翻译程序是一种把源语言书写的程序翻译成另一种语言书写的程序,而且后者和前者在逻辑上是等价的
    2. 编译程序:如果源语言为高级语言,目标语言为某台计算机上的汇编语言或机器语言(低级语言),则此翻译程序称为编译程序
    3. 解释程序:解释,执行高级语言源程序的程序
    4. 源程序:源语言编写的程序为源程序,一般为用高级语言编写的程序
    5. 目标程序:指用低级语言(机器语言或汇编语言)编写的程序
    6. 遍:是对源程序或其等价的中间语言程序从头到尾扫视并完成规定任务的过程
    7. 前端:主要由与源语言有关,但与目标机无关的那些部分组成,这些部分通常包括词法分析、语法分析、语义分析与中间代码生产,有的代码优化工作可以包括在前端
    8. 后端:包括编译程序中与目标机有关的那部分,如与目标机有关的代码优化和目标代码生产等。后端不依赖于源语言,仅依赖于中间语言。
  2. 第四题 编译程序有哪些主要构成成分?各自的主要功能是什么?
    一个典型的编译程序通常包括7个组成部分(有些地方也写8个,区分不同而已),他们是词法分析程序、语法分析程序、语义分析与中间代码生成程序、代码优化程序、目标代码生成程序、表格管理程序和错误处理程序。
    1. 词法分析程序:对输入的源程序进行从左到右的扫描和分解,识别出一个个单词,并以单词的内部表示形式输出。同时对源程序做一些简单的处理,如过滤空格、去掉注释、报告错误。
    2. 语法分析程序:在词法分析的基础上,将单词符号组成各类语法短语,如程序、语句、表达式等,通过分析确定整个输入串是否构成语法上正确的程序。这种语法短语,亦可称为语法单位、语法范畴,可以表示成语法树。
    3. 语义分析与中间代码生产:对语法分析所识别出的各类语法短语,分析其含义,进行初步的翻译(产生中间代码)。这一阶段有两项工作:首先对每个语法短语进行静态语义审查,如标识符是否定义,类型是否匹配等。若无语义错误,则进行中间代码的翻译。
    4. 代码优化程序:对已产生的中间代码进行加工变换,使生成的目标代码更为高效。
    5. 目标代码生成程序:把中间代码(经过优化的中间代码)变换成特定机器上的低级语言代码
    6. 表格管理程序:负责建立、填写和查找等一系列表格管理工作。
    7. 错误处理程序:处理和校正源程序中存在的词法、语法和语义错误。

第二章

第三章

  1. 第四题
    1. 上下文无关文法:若文法 G=(Vn,Vt,P,S)中的每一条规则的形式为 A->β,其中A∈Vnβ∈(Vn U Vt)* ,则称G是2型文法,即上下文无关文法。
    2. 推导:如果 A-> γ 是产生式,α和β是文法的任意符号串,αAβ -> αγβ 称为直接推导
    3. 最左推导:如果在整个推导中,每一步都是替换句型中最左边的非终结符,这样的推导称为最左推导。
    4. 最右推导:即在推导的每一步都替换最右边的非终结符,这样的推导称为最右推导。
    5. 句型:若S是文法G的开始符号,从开始符号S出发推导出的符号串称为文法G的一个句型。
    6. 句子:若X是文法G中的一个句型,且X∈Vt*,则称X是文法G的一个句子。
    7. 语言:把文法G产生的所有句子的集合称为G产生的语言,即为L(G)
    8. 文法等价:如果文法G1与文法G2产生的语言是相同的,即L(G1)=L(G2),则称这两个文法是等价的。
    9. 语法树:用一课树来表示句型的推导称为语法树。
    10. 二义文法:如果存在某个句型对应两颗或量颗以上的语法树,则称这个文法为而二义文法。
    11. LL(1)文法:对文法G的句子进行确定的自顶向下语法分析的充分必要条件是,G的任意两个具有相同左部的,产生式A—>α|β 满足下列条件:
      1. 如果α、β均不能推导出ε,则 FIRST(α) ∩ FIRST(β) = ∅。
      2. α 和 β 至多有一个能推导出 ε。
      3. 如果 β *═> ε,则 FIRST(α) ∩ FOLLOW(A) = ∅。
    12. 规约:设置一个栈,从输入符号串(指的是从语法分析器送来的单词符号)出发,将输入符号逐个移入栈中,边移入边分析,一旦栈顶形成某个产生式的右部时,就用该产生式左部的非终结符代替,称为规约。
    13. 规范规约:在规约过程中始终对句柄进行规约而形成的序列称为规范规约,也称为最左规约。
    14. 句柄:位于一个句型的最左直接短语称为该句型的句柄
    15. 短语: 若有 S⇒*xUy⇒+xuy,则u称为句型xuy相对于U的短语。

第四章

第五章

  1. 第一题 解释下列术语
    1. 属性:代表与文法符号相关的信息,和变量一样,可以进行计算和传递。
    2. 属性文法:包含一个上下文无关文法和一系列的语义规则,并为每个文法符号(终结符和非终结符)配备若干相关的“值”(属性)
    3. 继承属性:在一个属性文法中,每个产生式A->α都有一个形如b=f(c1,c2...,ck)的语义规则集,如果b是产生式右边某个文法符号X的一个属性,且c1,c2...,ck是A或产生式右边任何文法符号的属性,则称bA继承属性
    4. 综合属性:在一个属性文法中,每个产生式A->α都有一个形如b=f(c1,c2...,ck)的语义规则集,如果bA的一个属性,且c1,c2...,ck是产生式右边文法符号α的属性,或者是A的其他属性,则称bA综合属性
    5. 语义子程序:把某一种程序设计语言表示的程序转换为逻辑上等价的用另一种程序设计语言表示的程序的程序
    6. 语法制导的翻译:如果遍历语法树的操作和建立语法树的操作同时进行,成为语法制导的翻译方法。
    7. 翻译模式:给出使用语义规则进行计算的次序,把实现细节表示出来。

习题1
习题2
习题3
习题4
First和Follow的求解1
习题5
复习题集(蛮重要)
习题6

你可能感兴趣的:(#,编译原理,编译原理课堂笔记)