编译原理模拟题
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
优化:在不改变程序执行结果的前提下,提高中间代码或目标代码的质量。
目标代码生成:将中间代码转换成等价的目标代码。
1.3编译程序的生成方法有哪些?
参考答案:
(1)手工编写编译程序
(2)自编译
(3)自动生成编译程序
(4)移植
1.4画出编译程序总框。
参考答案见教材第4页图1.5。
1.5描述词法规则、语法规则、语义规则各使用哪些描述工具?
(2)判断abc、(((abc))是否为L(G)的句子,说明理由。
(3)画出句型((E))的语法树,写出其短语、直接短语和句柄。
2.3设有文法G[A]:
A a|b|e|A0|A1
(1)试问 分别由哪些符号组成?
(2)下列符号串a,a0,a0e01,0a,e111,e0011是否为该文法的句子?
(3)写出文法G1[A]产生的语言
2.直接推导、推导、句型、短语、直接短语、句柄、句子等重要概念;
3.为给定语言构造文法;
4.二义文法的判定。
(三)本章练习题和思考题
2.1写文法G1,G2,分别产生语言:
(1)L(G1)={ambn|m>0,n.≥0}。
(2)L(G2)={bmabm|m≥0}。
2.2设文法G为:E→(E)|abc
(1)写出文法G所定义的语言L(G)。
第三章词法分析与有穷自动机
(一)本章学习目标
1.理解词法分析器的功能及单词符号及输出单词的形式;
2.熟练掌握正规式与有穷自动机的定义形式;
3.熟练掌握有NFA到DFA的转换及DFA的确定化;
3.熟练掌握正规式与有穷自动机的等价性及其相互转换方法;
4.熟练掌握正规文法与有穷自动机的定义形式;
5.熟练掌握正规文法与有穷自动机的等价性及其相互转换方法;
(2)L(G2)={bmabm|m≥0}
参考答案:
G2:Sa|bSb
2.2设文法G为:E→(E)|abc
(1)写出文法G所定义的语言L(G)。
参考答案:
L(G)={(ma)m|m≥0}
(3)判断abc、(((abc))是否为L(G)的句子,说明理由。
参考答案:
abc是L(G)的句子。
因为存在推导:Eabc
2.熟练掌握上下文无关文法的定义;
3.熟练掌握形式语言的形式化定义方法;
4.直接推导、推导、最左(右)推导、短语、直接短语、句型、句柄、句子及语言等重要概念;
5.能为给定语言构造文法;
6.能利用推导与语法分析树判断文法的二义性,并进行修改;
7.了解文法和语言的分类。
(二)本章重点、要点
1.上下文无关文法的定义;
二.(15分)写出产生语言L(G1)的文法G1:
L(G1)={am bm c n|m,n≥0}。
三.(25分).设语言L是字母表{0,1}上以0开头、以1结尾的所有序列的集合。
(1)写出其正则表达式。
(2)构造识别L的NFA。
(3)构造识别L的DFA。
(4)给出其最小DFA。
四.(20分)设有文法G[S]:
S→A
A→B|AiB
S→C|B+C
T→A*|(
(1)试画出句型C+Ci(的语法树,并给出该句型的短语、直接短语、句柄和素短语。
(2)判断其是否为算符优先文法。
五.(25分)设有文法G[S]:
S→a|b|(T)
T→T,S|S
(1)计算每个非终结符的FIRSTVT和LASTVT。
(2)构造算符优先关系分析表。
(1)所定义的正规集(语言)是什么?
参考答案:
L={bbamaa |m≥0}。
(2)构造识别L的最小DFA。
参考答案:
(3)为其构造正则文法。
参考答案:
AbB
BbC
CaC|aD
Da
3.3有文法G(S):
S aAc
A bA|aA|a
(1)给出文法G(S)所对应的正规式。
参考答案:
a(a|b)*ac
(2)构造G(S)对应的NFA
(三)本章练习题和思考题
1.1编译程序由哪几部分构成?简述各部分功能。
1.2简述编译程序工作的基本过程,其各阶段的基本任务是什么?
1.3.编译程序的生成方法有哪些?
1.4画出编译程序总框。
1.5描述词法规则、语法规则、语义规则各使用哪些描述工具?
第二章文法和语言的基本知识
(一)本章学习目标
1.正确理解字母表和符号串的基本概念及其运算
(1)所定义的正规集(语言)L是什么?
(2)构造识别L的NFA。
(3)构造定义L的正则文法。
3.2设正则表达式bba*aa,
(1)所定义的正规集(语言)是什么?
(2)构造识别L的最小DFA。
(3)为其构造正则文法。
3.3有文法G(S):
S aAc
A bA|A|a
(1)给出文法G(S)所对应的正规式。
优化:在不改变程序执行结果的前提下,提高中间代码或目标代码的质量。
目标代码生成:将中间代码转换成等价的目标代码。
1.2简述编译程序工作的基本过程,其各阶段的基本任务是什么?
参考答案:
词法分析:接收输入源程序串,输出单词序列。
语法分析:接收单词序列,识别出各种语法成分,并做语法检查。
语义分析与中间代码生成:分析每个语法结构的静态语义,生成某种形式的中间代码。
值得注意的是,算符优先分析过程虽然是自下而上归约过程,但它的可归约串未必是句柄,而是素短语。也就是说,算符优先分析过程不是一种规范归约。
4.4设有表格结构文法G[S]:
(1)给出(a,(a,a))的最左、最右推导,并画出相应的语法树。
参考答案:
最左推导:S(T)(T,S)(S,S)(a,S)(a,(T,S))(a,(S,S))(a,(a,S))(a,(a,a))
FIRST(B)∩FOLLOW(B)={b,ε}∩{b,a,#}≠Ф
所以该文法不是LL(1)文法
(4)S→aSe|B B→bBe |C C→cCe|d
参考答案:
没有左递归且FIRST候选集不冲突
所以该文法为LL(1)文法
4.3简述算符优先分析过程。
参考答案:
算符优先分析法是一种简单、直观、广为使用的自下而上语法分析方法,它是依据算术表达式的四则运算过程而设计的一种方法,也适用于对一般的高级语言程序的分析。算符优先分析法的基本思想是,首先确定运算符(确切地说是终结符)之间的优先关系和结合性质,然后借助这种关系,比较相邻运算符之间的优先级来确定句型的可归约串,并进行归约。
现代远程教育
《编译原理》
课
程
学
习
指
导
书
作者:柴玉梅
《编译原理》课程指导书
第一章编译概述
(一)本章学习目标
1.正确理解什么是编译程序、编译程序工作的基本过程及其各阶段的基本任务;
2.熟练掌握编译程序总框;
3.了解编译程序的生成方法和编译技术在软件开发中的应用。
(二)本章重点、要点
编译程序的概念、编译程序各阶段的划分及任务。
参考答案:
描述词法规则工具:DFA、NFA、正规式、正规文法等。
描述语法规则使用工具:上下文无关文法。
描述语义规则各使用工具:属性文法、操作语义、公理语义、指称语义等。
第二章
2.1写文法G1,G2,分别产生语言:
(1)L(G1)={ambn|m>0,n.≥0}
参考答案:
G1:SAB
Aa|Aa
B|Bb
(3)文法G[S]是算符优先文法吗?如果是,给出优先函数,并给出串(a,(a,a))的算符优先分析过程。
附:各章练习题答案
第一章
1.1编译程序由哪几部分构成?简述各部分功能。
参考答案:
五个部分
词法分析:接收输入源程序串,输出单词序列。
语法分析:接收单词序列,识别出各种语法成分,并做语法检查。
语义分析与中间代码生成:分析每个语法结构的静态语义,生成某种形式的中间代码。
所以该文法为LL(1)文法
(2)S→Ab A→a|B|εB→b|ε
参考答案:
FIRST(B)={b,ε}∩FIRST(ε) ={ε}≠Ф
所以该文法不是LL(1)文法
(3)S→ABBA A→a |εB→b|ε
参考答案:
没有左递归且FIRST候选集不冲突
FIRST(A)∩FOLLOW(A)={a,ε}∩{b,#}=Ф
6.熟练掌握算符优先分析方法;
7.熟练掌握算符优先文法的判定。
8.了解优先函数的构造
(二)本章重点、要点
1.自上而下和自下而上语法分析的基本原理;
2.LL(1)分析表的构造及其分析算法
3.算符优先分析表的构造及其分析算法
(三)本章练习题和思考题
4.1考虑下面文法G1:
S→a|∧|(T)
T→T,S|S
预测分析表如下:
a
,
∧
(
)
#
S
S→a
S→∧
S→(T)
T
T→ST’
T→ST’
T→ST’
T’
T’→,ST’
T’→ε
4.2下面文法那些是LL(1)文法?
(1)S→Abc A→a|εB→b|ε
参考答案:
没有左递归且FIRST候选集不冲突且
FIRST(A)∩FOLLOW(A)={a,ε}∩{b}=Ф
FIRST(B)∩FOLLOW(B)={b,ε}∩{c}=Ф
(2)构造G(S)对应的NFA
(3)将G(S)对应的NFA确定化
(4)将(3)中的DFA最小化
第四章语法分析
(一)本章学习目标
1.理解语法分析程序的功能;
2.掌握自上而下语法分析原理;
3.熟练掌握确定的自上而下语法分析的前提条件、LL(1)文法的判定及变换;
4.熟练掌握LL(1)分析方法
5.掌握自下而上语法分析原理;
L(G1)={ambmcn|m,n≥0}。
参考答案:G1: SAB
A|aAb
B|Bc
第三章
3.1设正则表达式ba*,
(1) 所定义的正规集(语言)L 是什么?
参考答案:
L={bam|m≥0}。
(2) 构造识别L的NFA。
参考答案:
(3) 构造定义L的正则文法。
参考答案:
Ab|bB
Ba|aB
3.2设正则表达式bba*aa,
6.能依据状态转换图编写词法分析程序。
(二)本章重点、要点
1.词法分析器的功能
2.正规式、正规文法与有穷自动机的定义形式;
3.NFA到DFA的转换及DFA的确定化;
4.正规式、正规文法与有穷自动机的等价性及其相互转换方法;
5.词法分析程序的编写方法
1.
(三)本章练习题和思考题
3.1设正则表达式ba*,
T→ST’
T’→,ST’|ε
递归子程序:
PROCEDURE S;
IF sym=’a’THEN ADVANCE
ELSE IF sym=’∧’THEN ADVANCE
ELSE IF sym=’(’THEN
BEGIN
ADVANCE
T;
IF sym=’)’THEN ADVANCE
ELSE ERROR
END
ELSE ERROR;
VN={A}
(2)下列符号串a,a0,a0e01,0a,e111,e0011是否为该文法的句子?
参考答案:
a,a0, e111,e0011是该文法的句子。
a0e01,0a不是该文法的句子。
(3)写出文法G1[A]产生的语言
参考答案:
L(G1)是以a,b,e开头后跟若干个0或1的串。
2.4写出产生语言L(G1)的文法G1:
(1)消去G1的左递归,然后对每个非终结符写出不带回溯的递归子程序。
(2)经过改写的文法是否是LL(1)的?给出它的预测分析表。
4.2下面文法那些是LL(1)文法?
(1)S→Abc A→a|εB→b|ε
(2)S→Ab A→a|B|εB→b|ε
(3)S→ABBA A→a |εB→b|ε
(4)S→aSe|B B→bBe |C C→cCe|d
(((abc))不是L(G)的句子
因为不存在任何产生(((abc)串的推导。
(3)画出句型((E))的语法树,写出其短语、直接短语和句柄。
全部短语为:(E)、((E))。
直接短语为:(E)。
句柄为(E)。
2.3设有文法G[A]:
A a|b|e|A0|A1
(1)试问 分别由哪些符号组成?
参考答案:
VT={a,b,e,0,1}
参考答案:
(3)将G(S)对应的NFA确定化
参考答案:
(4)将(3)中的DFA最小化
参考答案:
第四章
4.1考虑下面文法G1:
S→a|∧|(T)
T→T,S|S
(3)消去G1的左递归,然后对每个非终结符写出不带回溯的递归子程序。
(4)经过改写的文法是否是LL(1)的?给出它的预测分析表。
参考答案:
(1)消去G1的左递归:S→a|∧|(T)
PROCEDURE T;
BEGIN
S;T’
END;
PROCEDURE S;
IF sym=’,’THEN
BEGIN
ADVANCE
S;T’
END;
(2)是LL(1)文法。
FIRST(S)={a,∧,(} FIRST(T)={a,∧,(} FIRST(T’)={,,ε}
FOLLOW(S)={#, , ,ε, )} FOLLOW(T)={)} FOLLOW(T’)={)}
4.3简述算符优先分析过程。
4.4设有表格结构文法G[S]:
(1)给出(a,(a,a))的最左、最右推导,并画出相应的语法树。
(2)计算文法G[S]的FIRSTVT集和LASTVT集。
(3)构造G[S]的优先关系表,并判断G[S]是否为算符优先文法。
样卷
一.(15分)编译程序由哪几部分构成?简述各部分功能。
目标代码生成:将中间代码转换成等价的目标代码。
1.3编译程序的生成方法有哪些?
参考答案:
(1)手工编写编译程序
(2)自编译
(3)自动生成编译程序
(4)移植
1.4画出编译程序总框。
参考答案见教材第4页图1.5。
1.5描述词法规则、语法规则、语义规则各使用哪些描述工具?
(2)判断abc、(((abc))是否为L(G)的句子,说明理由。
(3)画出句型((E))的语法树,写出其短语、直接短语和句柄。
2.3设有文法G[A]:
A a|b|e|A0|A1
(1)试问 分别由哪些符号组成?
(2)下列符号串a,a0,a0e01,0a,e111,e0011是否为该文法的句子?
(3)写出文法G1[A]产生的语言
2.直接推导、推导、句型、短语、直接短语、句柄、句子等重要概念;
3.为给定语言构造文法;
4.二义文法的判定。
(三)本章练习题和思考题
2.1写文法G1,G2,分别产生语言:
(1)L(G1)={ambn|m>0,n.≥0}。
(2)L(G2)={bmabm|m≥0}。
2.2设文法G为:E→(E)|abc
(1)写出文法G所定义的语言L(G)。
第三章词法分析与有穷自动机
(一)本章学习目标
1.理解词法分析器的功能及单词符号及输出单词的形式;
2.熟练掌握正规式与有穷自动机的定义形式;
3.熟练掌握有NFA到DFA的转换及DFA的确定化;
3.熟练掌握正规式与有穷自动机的等价性及其相互转换方法;
4.熟练掌握正规文法与有穷自动机的定义形式;
5.熟练掌握正规文法与有穷自动机的等价性及其相互转换方法;
(2)L(G2)={bmabm|m≥0}
参考答案:
G2:Sa|bSb
2.2设文法G为:E→(E)|abc
(1)写出文法G所定义的语言L(G)。
参考答案:
L(G)={(ma)m|m≥0}
(3)判断abc、(((abc))是否为L(G)的句子,说明理由。
参考答案:
abc是L(G)的句子。
因为存在推导:Eabc
2.熟练掌握上下文无关文法的定义;
3.熟练掌握形式语言的形式化定义方法;
4.直接推导、推导、最左(右)推导、短语、直接短语、句型、句柄、句子及语言等重要概念;
5.能为给定语言构造文法;
6.能利用推导与语法分析树判断文法的二义性,并进行修改;
7.了解文法和语言的分类。
(二)本章重点、要点
1.上下文无关文法的定义;
二.(15分)写出产生语言L(G1)的文法G1:
L(G1)={am bm c n|m,n≥0}。
三.(25分).设语言L是字母表{0,1}上以0开头、以1结尾的所有序列的集合。
(1)写出其正则表达式。
(2)构造识别L的NFA。
(3)构造识别L的DFA。
(4)给出其最小DFA。
四.(20分)设有文法G[S]:
S→A
A→B|AiB
S→C|B+C
T→A*|(
(1)试画出句型C+Ci(的语法树,并给出该句型的短语、直接短语、句柄和素短语。
(2)判断其是否为算符优先文法。
五.(25分)设有文法G[S]:
S→a|b|(T)
T→T,S|S
(1)计算每个非终结符的FIRSTVT和LASTVT。
(2)构造算符优先关系分析表。
(1)所定义的正规集(语言)是什么?
参考答案:
L={bbamaa |m≥0}。
(2)构造识别L的最小DFA。
参考答案:
(3)为其构造正则文法。
参考答案:
AbB
BbC
CaC|aD
Da
3.3有文法G(S):
S aAc
A bA|aA|a
(1)给出文法G(S)所对应的正规式。
参考答案:
a(a|b)*ac
(2)构造G(S)对应的NFA
(三)本章练习题和思考题
1.1编译程序由哪几部分构成?简述各部分功能。
1.2简述编译程序工作的基本过程,其各阶段的基本任务是什么?
1.3.编译程序的生成方法有哪些?
1.4画出编译程序总框。
1.5描述词法规则、语法规则、语义规则各使用哪些描述工具?
第二章文法和语言的基本知识
(一)本章学习目标
1.正确理解字母表和符号串的基本概念及其运算
(1)所定义的正规集(语言)L是什么?
(2)构造识别L的NFA。
(3)构造定义L的正则文法。
3.2设正则表达式bba*aa,
(1)所定义的正规集(语言)是什么?
(2)构造识别L的最小DFA。
(3)为其构造正则文法。
3.3有文法G(S):
S aAc
A bA|A|a
(1)给出文法G(S)所对应的正规式。
优化:在不改变程序执行结果的前提下,提高中间代码或目标代码的质量。
目标代码生成:将中间代码转换成等价的目标代码。
1.2简述编译程序工作的基本过程,其各阶段的基本任务是什么?
参考答案:
词法分析:接收输入源程序串,输出单词序列。
语法分析:接收单词序列,识别出各种语法成分,并做语法检查。
语义分析与中间代码生成:分析每个语法结构的静态语义,生成某种形式的中间代码。
值得注意的是,算符优先分析过程虽然是自下而上归约过程,但它的可归约串未必是句柄,而是素短语。也就是说,算符优先分析过程不是一种规范归约。
4.4设有表格结构文法G[S]:
(1)给出(a,(a,a))的最左、最右推导,并画出相应的语法树。
参考答案:
最左推导:S(T)(T,S)(S,S)(a,S)(a,(T,S))(a,(S,S))(a,(a,S))(a,(a,a))
FIRST(B)∩FOLLOW(B)={b,ε}∩{b,a,#}≠Ф
所以该文法不是LL(1)文法
(4)S→aSe|B B→bBe |C C→cCe|d
参考答案:
没有左递归且FIRST候选集不冲突
所以该文法为LL(1)文法
4.3简述算符优先分析过程。
参考答案:
算符优先分析法是一种简单、直观、广为使用的自下而上语法分析方法,它是依据算术表达式的四则运算过程而设计的一种方法,也适用于对一般的高级语言程序的分析。算符优先分析法的基本思想是,首先确定运算符(确切地说是终结符)之间的优先关系和结合性质,然后借助这种关系,比较相邻运算符之间的优先级来确定句型的可归约串,并进行归约。
现代远程教育
《编译原理》
课
程
学
习
指
导
书
作者:柴玉梅
《编译原理》课程指导书
第一章编译概述
(一)本章学习目标
1.正确理解什么是编译程序、编译程序工作的基本过程及其各阶段的基本任务;
2.熟练掌握编译程序总框;
3.了解编译程序的生成方法和编译技术在软件开发中的应用。
(二)本章重点、要点
编译程序的概念、编译程序各阶段的划分及任务。
参考答案:
描述词法规则工具:DFA、NFA、正规式、正规文法等。
描述语法规则使用工具:上下文无关文法。
描述语义规则各使用工具:属性文法、操作语义、公理语义、指称语义等。
第二章
2.1写文法G1,G2,分别产生语言:
(1)L(G1)={ambn|m>0,n.≥0}
参考答案:
G1:SAB
Aa|Aa
B|Bb
(3)文法G[S]是算符优先文法吗?如果是,给出优先函数,并给出串(a,(a,a))的算符优先分析过程。
附:各章练习题答案
第一章
1.1编译程序由哪几部分构成?简述各部分功能。
参考答案:
五个部分
词法分析:接收输入源程序串,输出单词序列。
语法分析:接收单词序列,识别出各种语法成分,并做语法检查。
语义分析与中间代码生成:分析每个语法结构的静态语义,生成某种形式的中间代码。
所以该文法为LL(1)文法
(2)S→Ab A→a|B|εB→b|ε
参考答案:
FIRST(B)={b,ε}∩FIRST(ε) ={ε}≠Ф
所以该文法不是LL(1)文法
(3)S→ABBA A→a |εB→b|ε
参考答案:
没有左递归且FIRST候选集不冲突
FIRST(A)∩FOLLOW(A)={a,ε}∩{b,#}=Ф
6.熟练掌握算符优先分析方法;
7.熟练掌握算符优先文法的判定。
8.了解优先函数的构造
(二)本章重点、要点
1.自上而下和自下而上语法分析的基本原理;
2.LL(1)分析表的构造及其分析算法
3.算符优先分析表的构造及其分析算法
(三)本章练习题和思考题
4.1考虑下面文法G1:
S→a|∧|(T)
T→T,S|S
预测分析表如下:
a
,
∧
(
)
#
S
S→a
S→∧
S→(T)
T
T→ST’
T→ST’
T→ST’
T’
T’→,ST’
T’→ε
4.2下面文法那些是LL(1)文法?
(1)S→Abc A→a|εB→b|ε
参考答案:
没有左递归且FIRST候选集不冲突且
FIRST(A)∩FOLLOW(A)={a,ε}∩{b}=Ф
FIRST(B)∩FOLLOW(B)={b,ε}∩{c}=Ф
(2)构造G(S)对应的NFA
(3)将G(S)对应的NFA确定化
(4)将(3)中的DFA最小化
第四章语法分析
(一)本章学习目标
1.理解语法分析程序的功能;
2.掌握自上而下语法分析原理;
3.熟练掌握确定的自上而下语法分析的前提条件、LL(1)文法的判定及变换;
4.熟练掌握LL(1)分析方法
5.掌握自下而上语法分析原理;
L(G1)={ambmcn|m,n≥0}。
参考答案:G1: SAB
A|aAb
B|Bc
第三章
3.1设正则表达式ba*,
(1) 所定义的正规集(语言)L 是什么?
参考答案:
L={bam|m≥0}。
(2) 构造识别L的NFA。
参考答案:
(3) 构造定义L的正则文法。
参考答案:
Ab|bB
Ba|aB
3.2设正则表达式bba*aa,
6.能依据状态转换图编写词法分析程序。
(二)本章重点、要点
1.词法分析器的功能
2.正规式、正规文法与有穷自动机的定义形式;
3.NFA到DFA的转换及DFA的确定化;
4.正规式、正规文法与有穷自动机的等价性及其相互转换方法;
5.词法分析程序的编写方法
1.
(三)本章练习题和思考题
3.1设正则表达式ba*,
T→ST’
T’→,ST’|ε
递归子程序:
PROCEDURE S;
IF sym=’a’THEN ADVANCE
ELSE IF sym=’∧’THEN ADVANCE
ELSE IF sym=’(’THEN
BEGIN
ADVANCE
T;
IF sym=’)’THEN ADVANCE
ELSE ERROR
END
ELSE ERROR;
VN={A}
(2)下列符号串a,a0,a0e01,0a,e111,e0011是否为该文法的句子?
参考答案:
a,a0, e111,e0011是该文法的句子。
a0e01,0a不是该文法的句子。
(3)写出文法G1[A]产生的语言
参考答案:
L(G1)是以a,b,e开头后跟若干个0或1的串。
2.4写出产生语言L(G1)的文法G1:
(1)消去G1的左递归,然后对每个非终结符写出不带回溯的递归子程序。
(2)经过改写的文法是否是LL(1)的?给出它的预测分析表。
4.2下面文法那些是LL(1)文法?
(1)S→Abc A→a|εB→b|ε
(2)S→Ab A→a|B|εB→b|ε
(3)S→ABBA A→a |εB→b|ε
(4)S→aSe|B B→bBe |C C→cCe|d
(((abc))不是L(G)的句子
因为不存在任何产生(((abc)串的推导。
(3)画出句型((E))的语法树,写出其短语、直接短语和句柄。
全部短语为:(E)、((E))。
直接短语为:(E)。
句柄为(E)。
2.3设有文法G[A]:
A a|b|e|A0|A1
(1)试问 分别由哪些符号组成?
参考答案:
VT={a,b,e,0,1}
参考答案:
(3)将G(S)对应的NFA确定化
参考答案:
(4)将(3)中的DFA最小化
参考答案:
第四章
4.1考虑下面文法G1:
S→a|∧|(T)
T→T,S|S
(3)消去G1的左递归,然后对每个非终结符写出不带回溯的递归子程序。
(4)经过改写的文法是否是LL(1)的?给出它的预测分析表。
参考答案:
(1)消去G1的左递归:S→a|∧|(T)
PROCEDURE T;
BEGIN
S;T’
END;
PROCEDURE S;
IF sym=’,’THEN
BEGIN
ADVANCE
S;T’
END;
(2)是LL(1)文法。
FIRST(S)={a,∧,(} FIRST(T)={a,∧,(} FIRST(T’)={,,ε}
FOLLOW(S)={#, , ,ε, )} FOLLOW(T)={)} FOLLOW(T’)={)}
4.3简述算符优先分析过程。
4.4设有表格结构文法G[S]:
(1)给出(a,(a,a))的最左、最右推导,并画出相应的语法树。
(2)计算文法G[S]的FIRSTVT集和LASTVT集。
(3)构造G[S]的优先关系表,并判断G[S]是否为算符优先文法。
样卷
一.(15分)编译程序由哪几部分构成?简述各部分功能。