1 第一章 1.典型的编译程序在逻辑功能上由哪几部分组成? 答:编译程序主要由以下几个部分组成:词法分析、语法分析、语义分析、中间代码生成、中间代码优化、目标代码生成、错误处理、表格管理。 2. 实现编译程序的主要方法有哪些? 答:主要有:转换法、移植法、自展法、自动生成法。 3. 将用户使用高级语言编写的程序翻译为可直接执行的机器语言程序有哪几种主要的方式? 答:编译法、解释法。 4. 编译方式和解释方式的根本区别是什么? 答:编译方式:是将源程序经编译得到可执行文件后,就可脱离源程序和编译程序单独执行,所以编译方式的效率高,执行速度快; 解释方式:在执行时,必须源程序和解释程序同时参与才能运行,其不产生可执行程序文件,效率低,执行速度慢。 2 第二章 1. 乔姆斯基文法体系中将文法分为哪几类?文法的分类同程序设计语言的设计与实现关系如何? 答:1)0 型文法、1 型文法、2 型文法、3 型文法。 2) 2. 写一个文法,使其语言是偶整数的集合,每个偶整数不以 0 为前导。 答: ZSME | B S1|2|3|4|5|6|7|8|9 M | D | MD D0|S B2|4|6|8 E0|B 3. 设文法G 为: N D|ND D 0|1|2|3|4|5|6|7|8|9 请给出句子 123、301 和 75431 的最右推导和最左推导。 答:N ND N3 ND3 N23 D23 123 N ND NDD DDD 1DD 12D 123 N ND N1 ND1 N01 D01 301 N ND NDD DDD 3DD 30D 301 N ND N1 ND1 N31 ND31 N431 ND431 N5431 D5431 75431 N ND NDD NDDD NDDDD DDDDD 7DDDD 75DDD 754DD 7543D 75431 4. 证明文法 SiSeS|iS| i 是二义性文法。 答:对于句型iiSeS 存在两个不同的最左推导: S iSeS iiSes S iS iiSeS 所以该文法是二义性文法。 5. 给出描述下面语言的上下文无关文法。 (1) L1={anbnci |n>=1,i>=0 } (2) L2={aibj|j>=i>=1} (3) L3={anbmcmdn |m,n>=0} 答: (1) SAB AaAb | ab BcB | (2) SASb |ab 3 Aa | (3) SaSd | A | AbAc | 6. 设计一个最简的DFA M,使其能够识别所有的被3 整除的无符号十进制整数。 答: 1200|3|6|91|4|72|5|80|3|6|91|4|72|5|80|3|6|92|5|81|4|7 7. 设计一个DFA,使其能够接受...