1、编译技术命题指导意见教学内容 知识点及题型第一章 编译器概述A (1)编译的阶段划分 选择题 2 分1 编译程序绝大多数时间花在( )上。 A. 出错处理 B. 词法分析C. 目标代码生成 D. 符号表管理答案:D2 ( ) 和代码优化部分不是每个编译程序都必需的。A. 语法分析B. 中间代码生成C. 词法分析D. 代码生成答案:B3 编译程序前三个阶段完成的工作是( )。A. 词法分析、语法分析和代码优化 B. 代码生成、代码优化和词法分析C. 词法分析、语法分析和语义分析 D. 词法分析、语法分析和代码生成答案:C(2)遍的概念 填空题 2 分 1 编译阶段的活动常用一遍扫描来实现,一遍扫
2、描包括 和 。答案:读一个输入文件 写一个输出文件2 将编译程序分成若干个“遍”是为了_。答案:使程序的结构更加清晰3 编译器从逻辑上可以分为 7 个阶段,其中,可以作为一个后端遍的是 _阶段。答案:代码生成(3)前端和后端的划分 简答题 5 分1 什么是前端? 5 分答案:编译器分成分析和综合两大部分。分析部分揭示源程序的基本元素和它们所形成的层次结构,决定它们的含义,建立起源程序的中间表示,分析部分经常被称为前端。2 什么是后端? 5 分答案:编译器分成分析和综合两大部分。综合部分从源程序的中间表示建立起和源程序等价的目标程序,它经常被称为后端。3 什么是前端?什么是后端? 5 分答案:编
3、译器分成分析和综合两大部分。分析部分揭示源程序的基本元素和它们所形成的层次结构,决定它们的含义,建立起源程序的中间表示,分析部分经常被称为前端。综合部分从源程序的中间表示建立起和源程序等价的目标程序,它经常被称为后端。第二章 2.1 2.2 词法记号的定义及描述B (1)词法分析器的功能 选择题 2 分1 词法分析程序的输出结果是( ) 。A. 单词的种别编码B. 单词在符号表中的位置 C. 单词的种别编码和单词属性值D. 单词的单词属性值答案:C2 词法分析器用于识别_。 A. 字符串 B语句C单词D标识符答案:C3 扫描器所完成的任务是从字符串形式的源程序中识别出一个个具有独立含义的最小语
4、法单位即( ) 。A 字符 B单词 C句子 D句型答案:B(2)词法记号概念及属性 填空题 2 分1 词法记号是由 和 构成的二元组。答案:记号名 属性值2 词法单元是源程序中匹配一个 的字符序列。答案:记号模式3 影响语法分析的决策, 影响记号的翻译。答案:记号名 属性(3)正规式与语言的对应关系 选择题 2 分1 下面文法( )和正规表达式 a*b 描述的语言相同。A. Sab | aSbB. Sb | aSC. Sa | aSbD. Sa | Sb答案:B2 最多包含两个 a 的a,b上的语言( ) 。A. (a|)b*(a|)B. b*ab*ab*|b*ab*C. b*(a|b*)(a
5、|b*)b*D. b*(a|)b*(a|b*)b*答案:D3 与(a|b)*等价的正规式是( ) 。A. (a*|b*)*B. (a|b)+C. (ab)*D. a*|b*答案:A第二章 2.3.1,2.3.2 NFA,DFAC (1)NFA 与 DFA 的概念 选择题 2 分1 有如图所示的有穷自动机,与之等价的正规式为( ) 。A. (0|1)*(000|111)(0|1)B. (0|1) (000|111)(0|1)C. (0|1)*(000|111)(0|1) *D. ,B ,C 选项都不正确答案:C2 对于 NFA 和 DFA 模型说法错误的是( ) 。A. DFA 是 NFA 的特
6、殊形式B. DFA 与 NFA 的状态转换完全相同C. 都有唯一的开始状态D. 都可以有多个接受状态答案:B3 对于 DFA 模型,说法错误的是( ) 。A. DFA 从任何状态出发,对于任何输入符号,可有多个转换B. 任何状态都没有 转换C. DFA 有唯一的开始状态D. DFA 可以有多个接受状态答案:A(2)NFA 的构造 简答题 10 分1 设有非确定的有自限动机 NFA M=(A,B,C,0,1,A ,C),其中: (A,0)=C (A,1)=A,B (B,1)=C (C,1)=C 。请画出状态转换距阵和状态转换图。答案:状态转换距阵为: 0 1A C A,BB CC C状态转换图为
7、:2 构造正规式相应的 NFA : 1(0|1)*101。答案:A B 1C110113 为( |a)b*)* 构造非确定的有限自动机,给出它们处理输入串 ababbab 的转换序列。答案:输入串 ababbab 的转换序列: 0 1456789 145678 789 1456789 10 或者 0 1456789 1456789 1236789 1456789 10(3)NFA 转化为 DFA 简答题 10 分1 设=0,1上的正规集 S 由倒数第二个字符为 1 的所有字符串组成,请给出该字集对应的正规式,并构造一个识别该正规集的 DFA。答案:构造相应的正规式:(0|1)*1(0|1) N
8、FA: 确定化:I 0I1I0,1,2 1,2 1,2,31,2 1,2 1,2,31,2,3 1,2,4 1,2,3,41,2,4 1,2 1,2,31,2,3,4 1,2,4 1,2,3,4、2 构造正规式 1(0|1)*101 相应的 DFA。答案:先构造 NFA:确定化: 重新命名,令 AB 为 B、AC 为 C、ABY 为 D 得: 所以,可得 DFA 为: 3 对于下图所示 NFA,回答下列问题:(1)用正规式描述该有限自动机所表示的语言。(2)由 NFA 转为 DFA。(3)构造最简 DFA。答案:(1)(a|b)*a(a|b)*(2)(3)(4)DFA 的化简 简答题 10 分
9、1 已知 NFA= ( x,y,z,0,1,M,x,z ) ,其中:M(x,0)=z, M(y,0)=x,y, M(z,0)=x,z, M(x,1)=x, M(y,1)= ,M(z,1)=y, 构造相应的DFA 并最小化。答案:根据题意有 NFA 图:下表由子集法将 NFA 转换为 DFA:面将该 DFA 最小化: (1) 首先将它的状态集分成两个子集:P1=A,D,E,P2=B,C,F (2) 区分 P2:由于 F(F,1)=F(C,1)=E,F(F,0)=F 并且 F(C,0)=C,所以 F,C 等价。由于 F(B,0)=F(C,0)=C, F(B,1)=D,F(C,1)=E,而 D,E
10、不等价(见下步) ,从而 B 与 C,F 可以区分。有P21=C,F,P22=B。 (3) 区分 P1:由于 A,E 输入 0 到终态,而 D 输入 0 不到终态,所以 D 与 A,E 可以区分,有 P11=A,E,P12=D。 (4) 由于 F(A,0)=B,F(E,0)=F,而 B,F 不等价,所以 A,E 可以区分。 (5) 综上所述,DFA 可以区分为 P=A,B,D ,E,C,F。所以最小化的 DFA如下:2 给定下列自动机:把此自动机转换为确定自动机 DFA。答案:有状态矩阵如图:从而可得 DFA 如图:3 (1)将下图中的 NFA M 确定化为 DFA M。(2)将 DFA M化
11、简。 01aaba答案:确定化:a b0 0,1 11 0 -0,1 0,1 1状态编号 a b0 1 22 0 -1 1 2aa ab b未简化的 DFA最小化:分为:终态集0,1 非终态集2 0,1a =1 0,1b = 2所以:0,1 = 0 2 = 1a ba0 120 1第二章 2.4,2.5 词法分析器的生成器; 第二章习题D (1)直接从语言构造 DFA 简答题 5 分1 写出能产生字母表x,y上的不含两个相邻的 x,且不含两个相邻的的全体符号串的有限状态自动机。答案:210xyxy2 处于 /* 和 */之间的串构成注解,注解中间没有 */。画出接受这种注解的 DFA 的状态转
12、换图。答案:1 2 4start 52othersothers/ * */3 有语言 L=w|w (0,1)+,并且 w 中至少有两个 1 ,又在任何两个 1 之间有偶数个 0 ,试构造接受该语言的确定有限状态自动机。答案:(2)Lex 的功能 填空题 2 分1 Lex 是从基于正规式的描述来构造 。答案:词法分析器2 Lex 程序包含三部分: 、 和辅助函数。答案:声明 翻译规则3 由 Lex 建立的 分析器通常作为 分析器的一个子程序。答案:词法 语法第三章 3.1 上下文无关文法E (1)上下文无关文法定义选择题 2 分 ;1 一个上下文无关文法 G 包括四个组成部分,它们是:一组非终结
13、符号,一组终结符号,一个开始符号,以及一组( ) 。 A. 句子 B. 句型 C. 单词 D. 产生式答案:D2 文法分为四种类型,即 0 型、1 型、2 型、3 型。其中 2 型文法是( ) 。A. 短语文法 B. 正则文法 C. 上下文有关文法 D. 上下文无关文法答案:D3 文法分为四种类型,即 0 型、1 型、2 型、3 型。其中 0 型文法是_。A. 短语文法B. 正则文法C. 上下文有关文法D. 上下文无关文法答案:A(2)最左推导、最右推导简答题 5 分 ;1 文法 S-a|(T) T-T,S|S 对 (a,(a,a) 和 (a,a),(a),a) 的最左推导。答案: 对(a,(
14、a,a)的最左推导为: S=(T) =(T,S) =(S,S) =(a,S) =(a,(T) =(a,(T,S) =(a,(S,S) =(a,(a,S) =(a,(a,a) 对(a,a),(a),a) 的最左推导为: S=(T) =(T,S) =(S,S) =(T),S) =(T,S),S) =(T,S,S),S) =(S,S,S),S) =(T),S,S),S) =(T,S),S,S),S) =(S,S),S,S),S) =(a,S),S,S),S) =(a,a),S,S),S) =(a,a),S),S) =(a,a),(T),S) =(a,a),(S),S) =(a,a),(a),S) =
15、(a,a),(a),a)2 设文法 GE:E RP|P P (E)|i R RP+| RP* |P+|P*对 i+i*(i+i)的最右推导。答案: E RP R(E) R(RP) R(Ri) R(P+i) R(i+i) RP*(i+i) Ri*(i+i) P+i*(i+i) i+i*(i+i3 考虑文法 S-aSbS | bSaS |(a) 为句 abab 构造两个不同的最左推导,以此说明该文法是二义的。(b) 为 abab 构造对应的最右推导。答案:(3)分析树简答题 5 分; 1 考虑文法 S-aSbS | bSaS |(1) 为 abab 构造对应的分析树。(2) 这个文法产生的语言是什
16、么?答案:(1)(2)该文法产生 a、b 个数相等的 ab 串(含空串)2 对于文法 G(E): ET|E+TTF|T*FF(E)|i写出句型(T*F+i)的最右推导并画出语法树。答案:(1)ET F(E) (E+T) (E+F) (E+i) (T+i) (T*F+i)(2)语法树如右图。3 令文法 GS为: SABAaAb | abBb,(1)GS定义的语言 L(G)是什么?(2)给出句子 aabbb 的最左推导,并给出其语法分析树。ETF( E )E + TFiTT * F答案:(1)SabB abbSaAbBaabbBaabbbSaAbBaaAbbBaaabbbBaaabbbbSanbm
17、(n=0,m=1)(2)s AB aAbBaabbBaabbbb/.(4)二义性概念选择题 2 分 1 如果文法 G 是无二义的,则它的任何句子 ( ) 。A. 最左推导和最右推导对应的语法树必定相同 B. 最左推导和最右推导对应的语法树可能不同 C. 最左推导和最右推导必定相同 D. 可能存在两个不同的最左推导,但它们对应的语法树相同答案:A2 如果一个文法 G 是无二义性文法,对于任何一个句子,该句子( ) 。A. 可能存在两个不同的最左推导B. 可能存在两个不同的最右推导C. 最左推导和最右推导不同D. 仅存在一个最左推导和一个最右推导答案:D3 若文法 G 定义的语言是无限集,则文法必
18、然是( ) 。 A. 递归的 B. 前后文无关的 C. 二义性的 D. 无二义性的答案:A第三章 3.2 语言和文法F (1)消除左递归填空题 2 分 ;1 一个文法是左递归的,如果它有非终结符 A,对某个串 a,存在推导 。答案:A=+Aa2 的分析方法不能用于左递归文法,因此需要消除左递归。答案:自上而下3 由形式为 A-Aa 的产生式引起的左递归称为 。答案:直接左递归(2)提取左因子填空题 2 分 ;1 提取左因子用于产生适合于 的文法。答案:自上而下2 A-aB|aC,经过提取左因子,原来的产生式成为 和 。答案:A-aA A-B|C3 对于悬空 else 的文法stmt-if ex
19、pr then stmt else stmt| if expr then stmt| other提取左因子后的文法成为 和 。答案:stmt-if expr then stmt optional_else_part | other optional_else_part-else |(3)形式语言鸟瞰选择题 2 分 ;1 Chomsky 把文法分为 4 种类型,其中描述能力最强的是( ) 。A. 0 型B. 1 型C. 2 型D. 3 型答案:A2 文法分为四种类型,即 0 型、1 型、2 型、3 型。其中 1 型文法是( ) 。A. 短语文法 B. 正则文法 C. 上下文有关文法 D. 上下文
20、无关文法答案:C3 文法分为四种类型,即 0 型、1 型、2 型、3 型。其中 3 型文法是( ) 。A. 短语文法B. 正则文法C. 上下文有关文法D. 上下文无关文法答案:B第三章 3.3 自上而下分析 G (1)LL(1)文法概念选择题 2 分 ;1 3 在下面的各种编译方法中,属于自顶向下的语法分析算法的是( ) 。A. LL(1)分析方法B. LR(K) 分析方法C. SLR 分析方法D. LALR(1) 分析方法答案:A2 LL(1)分析法的名字中,第二个“L”的含义是( ) 。A. 自左向右进行扫描B. 每次采用最左推导 C. 采用最右推导的逆过程 最左规约D. 向输入串中查看一
21、个输入符号答案:B3 LL(1)分析法的名字中,第一个“L”的含义是( ) 。A. 自左向右进行扫描B. 每次采用最左推导C. 采用最右推导的逆过程 最左规约D. 向输入串中查看一个输入符号答案:A (2)构造预测分析表(包括求 FIRST、FOLLOW 集)简答题 10 分 ;1 设文法 G(S): SS aF|aF| aF F*aF|*a (1)消除左递归和回溯;(2)构造相应的 FIRST 和 Follow 集合。答案:(1)S-aFS|aFS S-aFS| F-*aF F-F| (2) FIRST( S)a,+ FOLLOW(S ) FIRST( S) +, FOLLOW(S) FIR
22、ST( F)* FOLLoW(F)(+, FIRST( F) *, FOLLOW(+,2 文法: S-MH|a H-LSo| K-dML| L-eHf M-K|bLM 判断 G 是否为 LL(1) 文法,如果是,构造 LL(1) 分析表。答案:各符号的 FIRST 集和 FOLLOW 集为: 预测分析表为: 由于预测分析表中无多重入口,所以可判定文法是 LL(1)的。3 请给对文法 GS进行改写成 LL(1)文法,并给出改写后文法的预测分析表,要求计算出改写后文法各非终极符的 FIRST 和 FOLLOW 集合。S S*aA | aA| *aA A +aA | +a答案:改写文法如下:S*aA
23、S | aASS*aAS | A+aAAA | FIRST FOLLOWS *,a #S *, #A + *,#A +, *,#预测分析表:* a + #S S*aAS S aASS S*AS SA A+aAA A AA A(3)用预测分析表对输入串进行分析的过程简答题 5 分 ;1 给定 LL(1)分析表:有输入符号串 i+i*i,写出按上述算法识别此符号串的过程。答案:2 已知文法分析表:i + * ( ) # - /E E-TG E-TGG G-+TG G- G- G-TGT T-FS T-FSS S- S-*FS S- S- S- S-/FSF F-i F-(E)有输入符号串 i-i/
24、i#,写出按上述算法识别此符号串的过程,遇到错误停止即可,不需要错误恢复。答案:步骤 分析栈 剩余字符 所用产生式 0 #E i-i/i# E-TG1 #GT i-i/i# T-FS2 #GSF i-i/i# F-i3 #GSi i-i/i# i 匹配4 #GS -i/i# S-5 #G -i/i# G-TG6 #GT- -i/i# -匹配7 #GT i/i# T-FS8 #GSF i/i# F-i9 #GSi i/i# i 匹配10 #GS /i# S-/FS11 #GSF/ /i# /匹配12 #GSF /i# F 出错3 已知文法分析表:有输入符号串(a,(a)#,写出按上述算法识别此符
25、号串的过程。a $ ( ) , #S a $ (T)T SF SF SFF ,SF答案:步骤 分析栈 剩余字符 所用产生式 0 #S (a,(a)# S-(T) 1 #)T( (a,(a)# (匹配2 #)T a,(a)# T-SF 3 #)FS a ,(a)# S-a 4 #)Fa a,(a)# a 匹配5 #)F ,(a)# F-,SF 6 #)FS, ,(a)# ,匹配7 #)FS (a)# S-(T) 8 #)F)T( (a)# (匹配9 #)F)T a)# T-SF 10 #)F)FS a)# S-a 11 #)F)Fa a)# a 匹配12 #)F)F )# F- 13 #)F)
26、)# )匹配14 #)F )# F- 15 #) )# )匹配16 # # acc!第三章 3.4 自下而上分析H (1)归约概念选择题 2 分;1 若 a 为终结符,则 A- a 为_项目。A. 归约B. 移进C. 接受D. 待约 答案:B2 移近-归约分析为输入串构造分析树是从( )开始的。A. 根结点B. 叶结点C. 中间结点D. 任一结点答案:B3 在每一步归约中,一个子串和某个产生式的( )匹配,然后用该产生式的( )符号代替这个子串。A. 右部 左部B. 右部 右部C. 左部 右部D. 左部 左部答案:A(2)句柄概念选择题 2 分;1 在规范归约中,用( )来刻画可归约串。A.
27、直接短语B. 句柄C. 产生式D. 记号答案:B2 下面说法正确的是( ) 。A. 句柄是该句型中和一个产生式左部匹配的子串B. 文法是二义的,句柄是唯一的C. 文法无二义时,句柄可能是唯一的D. 以上说法都不对答案:D3 面说法错误的是( ) 。A. 句柄是该句型中和一个产生式右部匹配的子串B. 文法是二义的,句柄可能不唯一C. 文法无二义时,句柄是唯一的D. 句型中能和产生式 A- 右部匹配的最左子串 就是句柄答案:D第三章 3.5 LR 分析器I (1)活前缀概念选择题 2 分 ;1一个句型中的活前缀为()A. 短语 B.简单短语 C.句柄 D.右句型的前缀,该前缀不超过最右句柄的右端答案:D2在 LR 分析法中,分析栈中存放的状态是识别规范句型 ( ) 的 DFA 状态。A.句柄 B. 前缀 C. 活前缀 D. LR(0)项目答案:C3下列语句描述错误的是()A.活前缀不包含句柄的任何符号,此时期待从输入串中看到该句柄对应的产生式 A的右部所推导出的符号串B.活前缀只包含句柄的一部分符号,表明该句柄对应的的产生式 21的右部子串1已出现在栈顶,期待从输入串中看到 2推导出的符号串C.活前缀已含有句柄的全部符号,表明该句柄对应的产生式 A的右部 已出现在栈顶