编译原理作业参考答案.
编译原理 作业参考答案
1
第1章 引 言
1、解释下列各词
源语言:编写源程序的语言(基本符号,关键字),各种程序设计语言都可以作为源语言。
源程序: 用接近自然语言(数学语言)的源语言(基本符号,关键字)编写的程序,它是翻译程序处理的对象。
目标程序: 目标程序是源程序经过翻译程序加工最后得到的程序。目标程序
(结果程序)一般可由计算机直接执行。
低级语言:机器语言和汇编语言。
高级语言:是人们根据描述实际问题的需要而设计的一个记号系统。如同自然语言(接近数学语言和工程语言)一样,语言的基本单位是语句,由符号组和一组用来组织它们成为有确定意义的组合规则。
翻译程序: 能够把某一种语言程序(源语言程序)改变成另一种语言程序(目
标语言程序),后者与前者在逻辑上是等价的。其中包括:编译程序,解释程序,汇编程序。
编译程序: 把输入的源程序翻译成等价的目标程序(汇编语言或机器语言),
然后再执行目标程序(先编译后执行),执行翻译工作的程序称为编译程序。
解释程序: 以该语言写的源程序作为输入,但不产生目标程序。按源程序中语句动态顺序逐句的边解释边执行的过程,完成翻译工作的程序称为解释程序。
2、什么叫“遍”?
指对源程序或源程序的中间形式(如单词,中间代码)从头到尾扫描一次,并作相应的加工处理,称为一遍。
3、简述编译程序的基本过程的任务。
编译程序的工作是指从输入源程序开始到输出目标程序为止的整个过程,整个过程可以划分5个阶段。
词法分析:输入源程序,进行词法分析,输出单词符号。
语法分析:在词法分析的基础上,根据语言的语法规则把单词符号串分解成各类语法单位,并判断输入串是否构成语法正确的“程序”。
中间代码生成:按照语义规则把语法分析器归约(或推导)出的语法单位翻译成一定形式的中间代码。
优化:对中间代码进行优化处理。
目标代码生成:把中间代码翻译成目标语言程序。
4、编译程序与解释程序的区别?
编译程序生成目标程序后,再执行目标程序;然而解释程序不生成目标程序,边解释边执行。
5、有人认为编译程序的五个组成部分缺一不可,这种看法正确吗?
编译程序的5个阶段中,词法分析,语法分析,语义分析和代码生成生成是必须完成的。而中间代码生成和代码优化并不是必不可少的。优化的目的是为了提高目标程序的质量,没有这一部分工作,仍然能够得到目标代码。
6、编译程序的分类
目前基本分为:诊断编译程序,优化编译程序,交叉编译程序,可变目标编译程序。 编译原理 作业参考答案
2
第2章 高级语言及其语法描述
1(P36)令文法为
N DND
D 0129
(1)文法描述的语言L(G)是什么?
(2)给出句子34,568的最左推导和最右推导。
答:(1)
L(G)={为可带前导0的正整数}
或L(G)={(0129)+ }
或 L(G)={为数字串}
(2)
最左推导:NNDDD3D34
NNDNDDDDD5DD56D568
最右推导:NNDN4D434
NNDN8ND8N68D68568
2*.写出一个文法,使其语言是奇数集,且每个奇数是不以0开头。
答:
S CAB|B (考虑了正负号)
A 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | AA | A0 |
B 1|3|5|7|9
C +|-|
或:(未考虑正负号)
S B | AB
B 1 | 3 | 5 | 7 | 9
A AD | N
N 2 | 4 | 6 | 8 | B
D 0 | N
或:(未考虑正负号)
S C | ABC
C 1 | 3 | 5 | 7 | 9
A 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9
B BA | B0 |
2.(P36, 8)令文法为
E TE+TE-T
T FT*FT/F
F (E)i
(1)给出该文法的VN、VT和S。
(2)给出i+i*i,i*(i+i)的最左推导和最右推导。
(3)给出i+i+i,i+i*i的语法树。
答:(1)
VN = { E, T, F }
VT = { +, -, *, /, (, ), i } 编译原理 作业参考答案
3
S = E
(2)
最左推导EE+TT+TF+Ti+Ti+T*Fi+F*Fi+i*Fi+i*i
ETT*FF*Fi*Fi*(E)i*(E+T)i*(T+T)i*(F+T)i*(i+T)
i*(i+F)i*(i+i)
最右推导EE+TE+T*FE+T*iE+F*iE+i*iT+i*iF+i*ii+i*i
ETT*FT*(E)T*(E+T)T*(E+F)T*(E+i)T*(T+i)T*(F+i)
T*(i+i)F*(i+i)i*(i+i)
⑵构造语法树
E
最左推导构造语法树
E + T
E + T i
T i
i
3.(P36, 9)证明下面的文法是二义的:
S iSeS | iS i
答:对于句子iiiei有两棵不同的语法树。因此该文法是二义的。
S iSeS iiSeS iiieS iiiei
S iS iiSeS iiieS iiiei 编译原理 作业参考答案
4
第3章 词法分析
1.设M=({x,y},{a,b},,x,{y})为一个非确定有限自动机NFA M,其中定义如下:
(x,a)={x,y}
(x,b)={y}
(y,a)=
(y,b)={x,y}
试构造其相应的最小化的确定有限自动机DFA M’。
答:由定义可知(x,a),(y,b)均为多值函数,所以是一个非确定有限自动机。
(1)根据函数值,先构造NFA M
(2)确定化:
① 构造DFA M’的转换矩阵:
I Ia Ib
{x} ① {x,y}
② {y} ③
{x,y} ② {x,y} ② {x,y} ②
{y} ③ {x,y} ②
② 确定DFA M’的初始状态和终态:
(a)转换矩阵中I列的第一个状态①为DFA M’的初始状态结点。
(b)含有y状态的子集均为DFA M’的终态结点(②、③为终态结点)。
③ 根据DFA M’的转换矩阵画出对应的状态转换图:
(3)最小化:
① 首先将其划分成终态集{2,3}和非终态集{1}
② {2,3}a={2} {2,3}, {2,3}b={2} {2,3} 编译原理 作业参考答案
5
因此{2,3}已是不可再区分的,所以该DFA M’已是最小化的。
2. (P64,7(1))构造正规式1(01)*101相应的DFA M。
答:(1)构造NFA M。
1(01)*101
1 (01)* 1 0 1
1 1 0 1
01
0
1 1 0 1
1
(2)构造转换矩阵
I I0 I1
{X} ① {1, 2, 3} ②
{1, 2, 3} ② {2, 3} ③ {2, 3, 4} ④
{2, 3} ③ {2, 3} ③ {2, 3, 4} ④
{2, 3, 4} ④ {2, 3, 5} ⑤ {2, 3, 4} ④
{2, 3, 5} ⑤ {2, 3} ③ {2, 3, 4, Y} ⑥
{2, 3, 4, Y } ⑥ {2, 3, 5} ⑤ {2, 3, 4} ④
(3)由转换矩阵构造DFA M X Y
X 31 5 4 2 Y
X 1 2 3 4 5 Y X 3 5 1 4 Y 编译原理 作业参考答案
6
1001111101234560
3.(P64,12(a))将下图所示的NFA M转换为等价的DFA M’,并将该DFA’最小化。
答:
该有限自动机状态0输入同一字符a时到达两个不同的结点,所以是NFA。
(1)构造转换矩阵
I Ia Ib
{0} ① {0,1} ② {1} ③
{0,1} ② {0,1} ② {1} ③
{1} ③ {0} ①
(2)由转换矩阵构造DFA M
a
a
b
a
b
(3)将DFA M最小化
① 将DFA M的状态划分为非终态集{3}和终态集{1,2}
编译原理习题参考答案
程序设计语言与编译——语言的设计与实现(第2版)
习题4答案
4-5 解:上下文有关文法(1型文法),产生的语言L(G){=aibici | i≥1,i为整数}
4-6 解:3型文法,L(G)={ai | i≥1,i为奇数}
4-7 解:2型文法,L(G)={aibi | i≥1,i为整数}
4-8 解:1型文法,L(G)={aibici | i≥1,i为整数}
4-9 解:
1. 最左推导 最右推导
S (A) (B) (SdB) S (A) (B) (SdB)
((A)dB) ((B)dB) (SdS) (Sda)
((S)dB) ((b)dB) ((A)da ((B)da)
((b)dS) ((b)da) ((s)da ((b)da)
2. 语法树
4-10解:
1. 因为存在推导S SbF SbP Sbc Fbc FaPbc
所以FaPbc是文法G (S) 的一个句型。
2. 语法树
4-11解:
因为串aaabaa可有下列两棵不同的语法树
所以文法G (S)是二义文法。 2 4-12解:
因为串i (*可有下列两棵不同的语法树
3 习题9答案
9-2解:
(1)消除文法G的②产生式直接左递归。
A→SeA' | fA' ③
A'→dA' | ④
(2)消除间接左递归:按S.A排序,将S的①产生式代入③有
A→AaeA' | AbeA' | ceA' | fA' ⑤
(3)消除⑤的直接左递归有
A→ceA'A" | fA'A" ⑥
A"→aeA'A" | beA'A" | ⑦
(4)对S的①产生式提公因子有
S→AB | c ⑧
B→| a | b ⑨
(5)最后,文法G提取公因子,消除左递归后的产生式由⑧, ⑨, ⑥, ⑦和④组成,无
《编译原理》课后习题答案
《编译原理》课后习题
第 1 章引论
第 1 题解释下列术语:
(1) 编译程序:如果源语言为高级语言,目标语言为某台计算机上的汇编语言或机器语
言,则此翻译程序称为编译程序。
(2) 源程序:源语言编写的程序称为源程序。
(3) 目标程序:目标语言书写的程序称为目标程序。
(4) 编译程序的前端:它由这样一些阶段组成:这些阶段的工作主要依赖于源语言而与
目标机无关。通常前端包括词法分析、语法分析、语义分析和中间代码生成这些阶
段,某些优化工作也可在前端做,也包括与前端每个阶段相关的出错处理工作和符
号表管理等工作。
(5) 后端:指那些依赖于目标机而一般不依赖源语言,只与中间代码有关的那些阶段,
即目标代码生成,以及相关出错处理和符号表操作。
(6) 遍:是对源程序或其等价的中间语言程序从头到尾扫视并完成规定任务的过程。
第 2 题
一个典型的编译程序通常由哪些部分组成?各部分的主要功能是什么?并画出编译程
序的总体结构图。
答案:一个典型的编译程序通常包含 8 个组成部分,它们是词法分析程序、语法分析程序、语义分析程序、中间代码生成程序、中间代码优化程序、目标代码生成程序、表格管理程序和错误处理程序。其各部分的主要功能简述如下。
词法分析程序:输人源程序,拼单词、检查单词和分析单词,输出单词的机内表达形式。
语法分析程序:检查源程序中存在的形式语法错误,输出错误处理信息。
语义分析程序:进行语义检查和分析语义信息,并把分析的结果保存到各类语义信息表
中。
中间代码生成程序:按照语义规则,将语法分析程序分析出的语法单位转换成一定形式
的中间语言代码,如三元式或四元式。
中间代码优化程序:为了产生高质量的目标代码,对中间代码进行等价变换处理。
目标代码生成程序:将优化后的中间代码程序转换成目标代码程序。
表格管理程序:负责建立、填写和查找等一系列表格工作。表格的作用是记录源程序的
各类信息和编译各阶段的进展情况,编译的每个阶段所需信息多数都从表格中读取,产生的
编译原理作业参考答案
1 编译原理作业参考答案
作业一
一、是非题
1.(×) 2.(×) 3.(×) 4.(×) 5.(×) 6.(√) 7. (√) 8.(√) 9.(√) 10.(×) 11.(√) 12.(√) 13.(√)
二、填空题
1.(词法分析),(语法分析),(中间代码生成),(代码优化),(目标代码生成)
2.(单词符号),(语法单位)。
3.(源程序),(单词符号)
4.(语法),(语义)
5. (词法分析)、(语法分析)、(语义分析),(中间代码产生),(代码优化),(目标代码生成)
6.(解释方式)
7. (语法规则)
8. (上下文无关文法)
9. (自上而下分析法),(自下而上分析法)
10. (规范推导)
11. (最左归约)
三、名词解释题:
1.词法分析器-----执行词法分析的程序。
2. 自编译方式------先对语言的核心部分构造一个小小的编译程序,再以它为工具构造一个能够编译更多语言成分的较大编译程序。如此扩展下去,就像滚雪球一样,越滚越大,最后形成人们所期待的整个编译程序。
3. 遍-----所谓“遍”就是对源程序或中间结果长头到尾扫描一次,并作有关的加工处理,生成新的中间结果或目标程序。
4. 编译程序-----一种翻译程序: 能够把某一种语言程序(称为源语言程序)转换成另一种语言(成为目标程序),而后着与前者在逻辑上是等价的。
5. 超前搜索-----所谓超前搜索是在词法分析过程中,有时为了确定词性,需超前扫描若干个字符。
6. 短语------令G是一个文法,S划文法的开始符号,假定αβδ是文法G的一个句型,如果 2 有SαAδ且Aβ,则称β是句型αβδ相对非终结符A的短语。
7. 规范句型------由规范推导所得到的句型。
8. 句柄------一个句型的最左直接短语。
9. -规范推导-----最右推导又称为规范推导。
四、简答题:
《编译原理》习题及答案
第一章
1、将编译程序分成若干个“遍”是为了 。
b.使程序的结构更加清晰
2、构造编译程序应掌握 。
a.源程序 b.目标语言
c.编译方法
3、变量应当 。
c.既持有左值又持有右值
4、编译程序绝大多数时间花在 上。
d.管理表格
5、 不可能是目标代码。
d.中间代码
6、使用 可以定义一个程序的意义。
a.语义规则
7、词法分析器的输入是 。
b.源程序
8、中间代码生成时所遵循的是- 。
c.语义规则
9、编译程序是对 。
d.高级语言的翻译
10、语法分析应遵循 。
c.构词规则
二、多项选择题
1、编译程序各阶段的工作都涉及到 。
b.表格管理 c.出错处理
2、编译程序工作时,通常有 阶段。
a.词法分析 b.语法分析 c.中间代码生成 e.目标代码生成
三、填空题
1、解释程序和编译程序的区别在 于是否生成目标程序 。
2、编译过程通常可分为5个阶段,分别是 词法分析 、语法分析中间代码生成 、代码优化和目标代码生成。 3、编译程序工作过程中,第一段输入是 源程序 ,最后阶段的输出为 标代码生成 程序。
4、编译程序是指将 源程序 程序翻译成 目标语言 程序的程序。
一、单项选择题
1、文法G:S→xSx|y所识别的语言是 。
a. xyx b. (xyx)* c. xnyxn(n≥0) d. x*yx*
2、文法G描述的语言L(G)是指 。
a. L(G)={α|S+ ⇒α , α∈VT*} b. L(G)={α|S*⇒α, α∈VT*}
编译原理作业参考答案 2
编译原理 作业参考答案
1
第1章 引 言
1、解释下列各词
源语言:编写源程序的语言(基本符号,关键字),各种程序设计语言都可以作为源语言。
源程序: 用接近自然语言(数学语言)的源语言(基本符号,关键字)编写的程序,它是翻译程序处理的对象。
目标程序: 目标程序是源程序经过翻译程序加工最后得到的程序。目标程序
(结果程序)一般可由计算机直接执行。
低级语言:机器语言和汇编语言。
高级语言:是人们根据描述实际问题的需要而设计的一个记号系统。如同自然语言(接近数学语言和工程语言)一样,语言的基本单位是语句,由符号组和一组用来组织它们成为有确定意义的组合规则。
翻译程序: 能够把某一种语言程序(源语言程序)改变成另一种语言程序(目
标语言程序),后者与前者在逻辑上是等价的。其中包括:编译程序,解释程序,汇编程序。
编译程序: 把输入的源程序翻译成等价的目标程序(汇编语言或机器语言),
然后再执行目标程序(先编译后执行),执行翻译工作的程序称为编译程序。
解释程序: 以该语言写的源程序作为输入,但不产生目标程序。按源程序中语句动态顺序逐句的边解释边执行的过程,完成翻译工作的程序称为解释程序。
2、什么叫“遍”?
指对源程序或源程序的中间形式(如单词,中间代码)从头到尾扫描一次,并作相应的加工处理,称为一遍。
3、简述编译程序的基本过程的任务。
编译程序的工作是指从输入源程序开始到输出目标程序为止的整个过程,整个过程可以划分5个阶段。
词法分析:输入源程序,进行词法分析,输出单词符号。
语法分析:在词法分析的基础上,根据语言的语法规则把单词符号串分解成各类语法单位,并判断输入串是否构成语法正确的“程序”。
中间代码生成:按照语义规则把语法分析器归约(或推导)出的语法单位翻译成一定形式的中间代码。
(完整版)编译原理第五章作业参考答案
编译原理习题解答页1/1
第五章自顶向下语法分析方法
1.对文法G[S]
Sa|∧|(T)
TT,S|S
(1)给出(a,(a,a))和(((a,a),∧,(a)),a)的最左推导。
(2)对文法G,进行改写,然后对每个非终结符写出不带回溯的递归子程序。
(3)经改写后的文法是否是LL(1)的?给出它的预测分析表。
(4)给出输入串(a,a)#的分析过程,并说明该串是否为G的句子。
解:
(1) (a,(a,a))的最左推导为S(T)(T,S)(S,S)(a,(T))(a,(T,S))(a,(S,a))(a,(a,a))
(((a,a),∧,(a)),a)的最左推导为
S(T)(T,S)(S,a)((T),a)((T,S),a)((T,S,S),a)((S,∧,(T)),a)(((T),∧,(S)),a)
(((T,S),∧,(a)),a)(((S,a),∧,(a)),a)(((a,a),∧,(a)),a)
(2)由于有TT,S的产生式,所以消除该产生式的左递归,增中一个非终结符U有新的文法G/[S]:
Sa|∧|(T)
TSU
U,SU|ε
分析子程序的构造方法
对满足条件的文法按如下方法构造相应的语法分析子程序。
(1) 对于每个非终结号U,编写一个相应的子程序P(U);
(2) 对于规则U::=x1|x2|..|xn,有一个关于U的子程序P(U),P(U)按如下方法构造:
IF CH IN FIRST(x1) THEN P(x1)
ELSE IF CH IN FIRST(x2) THEN P(x2)
ELSE ...
.
.
.
IF CH IN FIRST(xn) THEN P(xn)
ELSE ERROR
其中,CH存放当前的输入符号,是一个全程变量;ERROR是一段处理出错信息的程序;
P(xj)为相应的子程序。
(3) 对于符号串x=y1y2...yn;p(x)的含义为:
BEGIN
P(y1);
P(y2);
中南大学《编译原理》课程作业(在线作业)一及参考答案
1 / 17
(一) 单选题
1. 编译前端主要由与源语言有关但与目标机无关的那些部分组成。这些部分通常包括词法分析、语法分析、语义分析与中间代码产生。编译后端包括编译程序中与目标机有关的那些部分,如与目标机有关的 和目标代码生成生成等。( )
(A) 代码优化 (B) 静态语义检查 (C) 一致性检查 (D) 类型检查
参考答案:
(A)
2. 对于文法G[S] S →(L) S→aS S→a L →L,S L→S 句子 (a,(a,a)) 的最左推导是()。
(A) S=>(L)=>(L,S)=>(L,(L))=>(L,(L,S))=>(L,(L,a))=>(L,(S,a))=>(L,(a,a))=>(S,(a,a))=>(a,(a,a))
(B) S=>(L)=>(L,S)=>
(a,S)=>(a,(L))=>(a,(L,S))=>(a,(S,S))=>(a,(a,S))=>(a,(a,a))
(C) S=>(L)=>(L,S)=>(S,S)=>(a,S)=>
=>(a,(L,S))=>(a,(S,S))=>(a,(a,S))=>(a,(a,a))
(D) S=>(L)=>(L,S)=>(S,S)=>(a,S)=>(a,(L))=>(a,(L,S))=>(a,(S,S))=>(a,(a,S))=>(a,(a,a))
参考答案:
(D)
3. 高级语言程序的执行有编译方式和( )。
(A) 交互方式 (B) 解释方式 (C) 终端方式 (D) 命令方式
参考答案:
2 / 17 (B)
4. 已知文法G[S] S→S*aF | aF | *aF F→+aF | +a 消除文法左递归和提公共左因子后的文法为( )。
(A) S→aFS’ | *aFS’ S’→*aFS’ | ε F→+aF’ F’→F |ε
(B) S→aFS’ | *aFS’ S’→ ε F→+aF’ F’→F |ε
中南大学《编译原理》课程作业(在线作业)二及参考答案
1 / 18
(一) 单选题
1. 已知文法G[S]及相应翻译方案 S→aAb {print “1”} S→a {print “2”} A→AS
{print “3”} A→c {print “4”} 输入acab,输出是()。
(A) 4231 (B) 3214 (C) 1234 (D) 3421
参考答案:
(A)
2. a:=(b+c)*e+(b+c)/f的逆波兰式是()。
(A) abc*e+bc+f/+:= (B) abc+e*bc+f/+:= (C) abc+e*b+c+f/:= (D) abc+eb*c+f/+:=
参考答案:
(B)
3. 规范归约也称为()。
(A) 最上归约
(B) 最左归约
(C) 最下归约
(D) 最右归约
参考答案:
(B)
4. 规范归约使用进行()归约。
(A) 句柄
2 / 18 (B) 最左素短语
(C) 最右素短语
(D) 素短语
参考答案:
(A)
5. 素短语是指这样一个短语,()含有一个终结符,并且,除它自身外不再含任何更小的素短语。
(A) 至多 (B) 只 (C) 至少 (D) 不
参考答案:
(C)
6. 表达式(a+b)*(c+d)后缀式为()。
(A) abcd++* (B) abcd*++ (C) ab*cd++ (D) ab+cd+*
参考答案:
(D)
7. 在语法树中,一个结点的继承属性由此结点的父结点和/或兄弟结点的某些属性确定称为()。
(A) 继承属性 (B) 一致属性 (C) 原子属性 (D) 综合属性
参考答案:
(A)
3 / 18 8. 在形式语言中,()常被称为规范推导。
(A) 最上推导
(B) 最左推导
(C) 最下推导
(D) 最右推导
参考答案:
(D)
9. 自下而上分析的中心问题是()。
《编译原理》(陈火旺版)课后作业参考答案ch6-10
1 第6章 属性文法和语法制导翻译
7. 下列文法由开始符号S产生一个二进制数,令综合属性val给出该数的值:
试设计求S.val的属性文法,其中,已知B的综合属性c, 给出由B产生的二进位的结果值。例如,输入101.101时,S.val=5.625,其中第一个二进位的值是4,最后一个二进位的值是0.125。
【答案】
产生式 语义规则
S→L1. L2 { S.val := L1.val + L2.val*2-L2.length }
S→L { S.val:= L.val }
L→L1B { L.val:=L1.val*2+B.val;
L. length:= L1.length +1 }
L→B { L.val:=B.val;
L. length:= 1 }
B→0 { B.val:= 0 }
B→1 { B.val:=1 }
11. 设下列文法生成变量的类型说明:
(1) 构造一下翻译模式,把每个标识符的类型存入符号表;参考例6.2。
【答案】
产生式 语义规则
L→ id L1 { S.val := L1.val + L2.val*2-L2.length }
L→, id L1 { S.val:= L.val }
L→ :T { L.val:=L1.val*2+B.val;
L. length:= L1.length +1 }
T→ integer { L.val:=B.val;
L. length:= 1 }
T→ real { B.val:= 0 }
S→L.L∣L
L→LB∣B
B→0∣1
L→ id L
L→, id L∣:T
T→ integer∣real 2 第7章 语义分析和中间代码产生
1. 给出下面表达式的逆波兰表示(后缀式):
【答案】
原式 后缀式
(1) a*(-b+c) ab-c+*
(2) a+b*(c+d/e) abcde/+*+
(3) –a+b*(-c+d) a-bc-d+*+
编译原理习题参考答案 2
编译原理习题参考答案
第⼆章2.构造产⽣下列语⾔的⽂法
(2){a n b m c p|n,m,p≥0}
解: G(S) :S→aS|X,X→bX|Y,Y→cY|ε
(3){a n # b n|n≥0}∪{cn # dn|n≥0}
解: G(S):S→X,S→Y,X→aXb|#, Y→cYd|# }
(5)任何不是以0 打头的所有奇整数所组成的集合
解:G(S):S→J|IBJ,B→0B|IB|ε,I→J|2|4|6|8, J→1|3|5|7|9}
(6)(思考题)所有偶数个0 和偶数个1 所组成的符号串集合
解:对应⽂法为 S→0A|1B|ε,A→0S|1C B→0C|1S C→1A|0B3.描述语⾔特点
(2)S→SS S→1A0 A→1A0 A→ε
解:L(G)={1n10n11n20n2… 1nm0nm |n1,n2,…,nm≥0;且n1,n2,…nm 不全
为零}该语⾔特点是:产⽣的句⼦中,0、1 个数相同,并且若⼲相接的1 后必然紧接数量相同连续的0。
(5)S→aSS S→a
解:L(G)={a(2n-1)|n≥1}可知:奇数个a5. (1) 解:由于此⽂法包含以下规则:AA→ε,所以此⽂法是0 型⽂法。
7.解:
(1)aacb 是⽂法G[S]中的句⼦,相应语法树是:
最右推导:S=>aAcB=>aAcb=>aacb
最左推导:S=>aAcB=>aacB=>aacb
(3)aacbccb 不是⽂法G[S]中的句⼦aacbccb 不能从S推导得到时,它仅是⽂法G[S]的⼀个句型的⼀部分,⽽不是⼀个句⼦。
11.解:最右推导:
(1) S=>AB=>AaSb=>Aacb=>bAacb=>bbAacb=>bbaacb
上⾯推导中,下划线部分为当前句型的句柄。对应的语法树为:
第三章3 假设M:⼈ W:载狐狸过河,G:载⼭⽺过河,C:载⽩菜过河
6 根据⽂法知其产⽣的语⾔是
L={a m b n c i| m,n,i≧1}
可以构造如下的⽂法VN={S,A,B,C}, VT={a,b,c}P={ S →aA, A→aA, A→bB, B→bB, B→cC, C→cC, C→c} 其状态转换图如下:
