第一章 引论

1.1 计算机如何执行高级语言程序?

在计算机上执行一个高级语言程序一般要分为两步:第一步,用一个编译程序把高级语言翻译成机器语言程序;第二步,运行所得的机器语言程序求得计算结果翻译程序是指能够把某一种语言程序(称为源语言程序)转换成另一种语言程序(称为目标语言程序)的程序;如果源语言是“高级语言”而目标语言是“低级语言”,那么这样的翻译程序就称为编译程序解释程序以该语言写的源程序作为输入,但不产生目标程序,而是边解释边执行源程序本身。

1.2 编译程序的工作过程有哪几个阶段?

(1)词法分析:输入源程序,对构成源程序的字符串进行扫描和分解,识别出一个个的单词(亦称单词符号或简称符号);
(2)语法分析:在词法分析的基础上,根据语言的语法规则,把单词符号串分解成各类语法单位(语法范畴);
(3)语义分析与中间代码生成:对语法分析所识别出的各类语法范畴,分析其含义,并进行初步翻译(产生中间代码);
(4)优化:对前段产生的中间代码进行加工变换,以期在最后阶段能产生出更为高效(省时间和空间)的目标代码;
(5)目标代码生成:把中间代码(或经优化处理之后)变换成特定机器上的低级语言代码。

1.3 什么是编译前端与编译后端?

前端主要由与源语言有关但与目标机无关的那些部分组成;后端包括编译程序中与目标机有关的那些部分。

1.4 如何学习构造编译程序?

要在某一台机器上为某种语言构造一个编译程序,必须掌握下述三方面的内容:
(1)源语言
(2)目标语言
(3)编译方法

第二章 高级语言及其语法描述

2.1 什么是抽象数据类型(ADT)?其作用是什么?

一个抽象数据类型包括:
(1)数据对象的一个集合;
(2)作用于这些数据对象的抽象运算的集合;
(3)这种类型对象的封装。
作用:增加程序的可读性和可理解性,提高可维护性,降低软件设计的复杂性。

2.2 什么是上下文无关文法(CFG)?

文法是描述语言的语法结构的形式规则(即语法规则),这些规则必须是准确的,易于理解的,而且应当有相当强的描述能力,有利于句子分析和翻译,且最好能通过这些规则自动产生有效的语法分析程序。所谓上下文无关文法是这样一种文法,它所定义的语法范畴(或语法单位)是完全独立于这种范畴可能出现的环境的。对于现今的程序语言来说,上下文无关文法基本上是够用了。归纳起来,一个上下文无关文法G包括四个组成部分:一组终结符号,一组非终结符号,一个开始符号,以及一组产生式。

2.3 何谓“标识符”?何谓“名字”?两者的区别是什么?名字的左值和右值是什么?

标识符是高级语言中定义的由字母、数字和下划线组成的以字母或下划线开头的一个字符串,它只是个标志,没有其他含义;名字是用标识符表示的,用于标识程序中的对象,名字不仅仅是一个字符串,它还具有属性和值。名字的左值表示该名字所代表的存储单元的地址,右值表示该名字所代表的存储单元的内容。

第三章 词法分析

3.1 词法分析的任务是什么?

从左至右逐个字符地对源程序进行扫描,产生一个个的单词符号,把作为字符串的源程序改造成为单词符号串的中间程序,因此词法分析是编译的基础。

3.2 什么是确定有限自动机(DFA)?

一个确定有限自动机(DFA)M是一个五元式:
M=(S,Σ,δ,s0,F)M=(S,Σ,δ,s_0,F)M=(S,Σ,δ,s0​,F)
其中:
(1)SSS是一个有限集,它的每个元素称为一个状态。(有穷状态集);
(2)ΣΣΣ是一个有穷字母表,它的每个元素称为一个输入字符
(3)δδδ是一个从S×ΣS×ΣS×Σ至SSS的单值部分映射
(4)s0ϵSs_0ϵSs0​ϵS,是唯一的初态;
(5)F⊆SF⊆SF⊆S,是一个终态集(可空)。

3.3 什么是非确定有限自动机(NFA)?

一个非确定有限自动机(NFA)M是一个五元式:
M=(S,Σ,δ,S0,F)M=(S,Σ,δ,S_0,F)M=(S,Σ,δ,S0​,F)
其中:
(1)SSS是一个有限集,它的每个元素称为一个状态。(有穷状态集);
(2)ΣΣΣ是一个有穷字母表,它的每个元素称为一个输入字符
(3)δδδ是一个从S×Σ∗S×Σ^*S×Σ∗至SSS的子集的映照
(4)S0⊆SS_0⊆SS0​⊆S,是一个非空初态集
(5)F⊆SF⊆SF⊆S,是一个终态集(可空)。

第四章 语法分析——自上而下分析

4.1 什么是LL(1)文法?

(1)文法不含左递归;
(2)文法中每一个非终结符A的各个产生式的各候选首符集两两不相交;
(3)对文法中的每个非终结符A,若它存在某个候选首符集包含εεε,则该非终结符的终结首符集与其终结随符集的交集为空。

第五章 语法分析——自下而上分析

5.1 算符优先分析与规范规约分析的区别?

算符优先分析用“最左素短语”来刻画“可规约串”;在“规范规约”分析中则用“句柄”来刻画“可规约串”。

5.2 什么叫算符优先分析?

(1)一种简单直观、广为使用的自下而上分析法;
(2)特别有利于表达式分析;
(3)宜于手工实现;
(4)算符优先分析法不是一种规范规约法。

5.3 什么是算符文法?

如果一个文法的任一产生式的右部都不含两个相继(并列)的非终结符,即不含如下形式的产生式右部:
…QR……QR……QR…
则我们称该文法为算符文法

5.4 什么是LR文法?

对于一个文法,如果能够构造一张LR分析表,使得它的每个入口均是唯一确定的,则我们将把这个文法称为LR文法。并非所有上下文无关文法都是LR文法。但对于多数程序语言来说,一般都可用LR文法描述。LR文法肯定是无二义的,一个二义文法决不会是LR的

5.5 什么是活前缀?

所谓活前缀是指规范句型的一个前缀,这种前缀不含句柄之后的任何符号。之所以称为活前缀,是因为在右边增添一些终结符号之后,就可以使它成为一个规范句型。

5.6 什么是LR(0)项目?

文法G的每一个产生式的右部添加一个圆点称为G的一个LR(0)项目(简称项目)。直观上说,一个项目指明了在分析过程的某时刻我们看到产生式多大一部分。

5.7 为什么要拓广文法?

(1)保证文法的开始符号不会出现在任何产生式的右部
(2)为了确定出唯一的接受项目S′→S∙S'→S∙S′→S∙

第六章 属性文法和语法制导翻译

6.1 什么是属性文法?属性分为哪几类?

属性文法(也称属性翻译文法),它是在上下文无关文法的基础上,为每个文法符号(终结符或非终结符)配备若干相关的“值”(称为属性)。这些属性代表与文法符号相关的信息,例如它的类型、值、代码序列、符号表内容等等。属性与变量一样,可以进行计算和传递。属性加工的过程即是语义处理的过程。对于文法的每个产生式都配备了一组属性的计算规则,称为语义规则
属性通常分为两类:综合属性继承属性

6.2 什么是语法制导翻译法?

基于属性文法的处理过程通常是这样的:对单词符号串进行语法分析,构造语法分析树,然后根据需要遍历语法树并在语法树的各结点处按语义规则进行计算,这种由源程序的语法结构所驱动的处理办法就是语法制导翻译法

第七章 语义分析和中间代码产生

7.1 许多编译程序采用独立于机器的、复杂性介于源语言和机器语言之间的中间语言的好处是什么?

(1)便于进行与机器无关的代码优化工作;
(2)使编译程序改变目标机更容易;
(3)使编译程序的结构在逻辑上更为简单明确。

第十章 优化

10.1 什么是优化?优化有哪些级别?

对程序进行各种等价变换,使得从变换后的程序出发,能生成更有效的目标代码,我们通常称这种变换为优化
优化的级别:
(1)局部优化
(2)循环优化
(3)全局优化

程序设计语言编译原理-陈火旺(第三版)简答题复习相关推荐

  1. 编译原理陈火旺第三版第六章课后题答案

    下面的答案仅供参考! 1.按照表6.1所示的属性文法,构造表达式(4*7+1) *2的附注语法树. 答: 首先考虑最底最左边的内部结点,它对应于产生式F→digit,相应的语义规则为F. val: = ...

  2. 编译原理陈火旺第三版第七章课后题答案

    下面的答案仅供参考! 1. 给出下面表达式的逆波兰表示(后缀式): a*(-b+c)                               not A or not (C or not D) a ...

  3. 编译原理陈火旺版第三章课后题答案

    下面答案仅供参考! 1.编写一个对于 Pascal 源程序的预处理程序.该程序的作用是,每次被调用时都将 下一个完整的语句送进扫描缓冲区,去掉注解行,同时要对源程序列表打印. 答:以下是一个简单的预处 ...

  4. 编译原理陈火旺版第四章课后题答案

    下面答案仅供参考! 1.考虑下面文法G1: S→a∣∧∣(T) T→T,S∣S (1) 消去 Q 的左递归.然后,对每个非终结符,写岀不带回溯的递归子程序. (2) 经改写后的文法是否是LL(1)的? ...

  5. 编译原理陈火旺版第五章课后题答案

    下面答案仅供参考! 1.令文法G为: E→E+T∣T T→T*F∣F F→(E)∣i 证明E+T*F是它的一个句型,指出这个句型的所有短语,直接短语和句柄. 2.考虑下面的表格结构文法G2: S→a∣ ...

  6. 程序设计语言编译原理_编译原理学习笔记(二):高级程序设计语言

    高级程序设计语言 一.语言概述 1.1 语法 v.s. 语义 程序本质上是一定字符集上的字符串 语法:一组规则,用它可以形成和产生一个合式(well-formed)的程序 定义了程序的形式结构 定义语 ...

  7. 编译原理课后习题答案(清华大学第三版)

    编译原理期末速成详细笔记在本人发布的资源里,可自行下载. 第二章答案 第三章答案 第四章答案 第五章答案 第六章答案

  8. 【编译原理】龙书第三章作业答案

    [编译原理]龙书第三章作业答案 练习3.1.1:根据3.1.2节中的讨论,将下面的C++程序划分成正确的词素序列.哪些词素应该有相关联的词法值?应该具有什么值? 答案: 左列为词素,右列为值,划分如下 ...

  9. Web程序设计—ASP.NET实用网站开发(第三版)课后习题答案

    Web程序设计-ASP.NET实用网站开发(第三版)课后习题答案 (沈士根.叶晓彤编著-清华大学出版社) 第一章 一.填空题: 1.NET Framework 主要包括 (CLR)和(.NET Fra ...

  10. 微型计算机原理与接口技术 第三版(张荣标)答案

    微型计算机原理与接口技术第三版答案 第1章 练习题 1.选择题 (1)B C A (2) A (3) D A (4) C 2.填空 (1) 10, 12 (2) 取出指令, 执行指令 (3) (4) ...

最新文章

  1. 深入理解HTML协议
  2. bash-shell--高级编程
  3. ASP.NET MVC分页实现
  4. game,match,competition,contest区别
  5. .Net Core 简洁架构事件(这个不完整,待仔细补充)
  6. mysql 解压缩安装_[mysql] MySQL解压缩安装步骤
  7. cad转shp格式带属性_Excel、Word、PPT、CAD办公格式怎么转?方法汇总,可批量
  8. 自编Win8风格Android音乐播放器应用源码(单机版)
  9. essential-phone的相关体验
  10. centOS中网络配置相关文件配置选项说明
  11. cart算法_ID3、C4.5、CART决策树算法
  12. SCM供应链管理的背景及意义
  13. JS搜索省份匹配出省份的所有城市
  14. 隐马尔可夫模型拼音汉字输入法
  15. 小甲鱼C++ 1 语言与思想介绍
  16. Element is not clickable at point,Other element would receive the click: xxx 遇到某个对象Click()不能正常使用?
  17. Pandas拼接、数据分析实操
  18. 等效结点荷载计算机语言,等效节点荷载,equivalent node load,音标,读音,翻译,英文例句,英语词典...
  19. 2021 Java后端+大数据暑期实习大厂面经
  20. Ubuntu16.04系统nvidia显卡上图形界面及OpenGL环境搭建心得

热门文章

  1. 24种编程语言的Hello World程序
  2. LoadRunner 11 安装及破解
  3. Ucenter通信原理
  4. 为什么周报如此重要?如何才能写好周报
  5. sql优化的几种方法
  6. 《21天学通Java(第7版)》—— 2.7 总结
  7. 2022最新酷盒iApp源码V7.8版+内置超多功能
  8. 极光im php,利用php+curl调用极光IM第三方REST API方法经验
  9. Prescan(一):无人驾驶仿真软件简介
  10. 2021年JAVA原生安卓影视APP源码支持PC+WAP