编译原理 第二章 学习总结
第二章学习的是高级语言及语法描述,首先是程序语言的定义,从语法语义
方面来定义语言。接下来是高级语言的一般特性,高级语言的分类包括强制式语言
,应用式语言,基于规则的语言和面向对象语言,本章的重点是上下文无关文法,
下面选择书本后面的练习题来说明:
T6:N -> D|ND,D -> 0|1|2|3|4|5|6|7|8|9,问它的语言
L是什么?N能转换成D,也就是能得到0到9的一位数字,或者N推出ND,N继续推出0到9的数字,
于是L的语言就是一窜由0到这10个数字组成的一个窜,至少是1位,至多不限。(2)给出0127,34,568
的最左推导和最右推导。
这里只展示568的做法,另外两个类似:
N->ND->NDD->DDD->5DD->56D->568 这是568的最左推导。
N->ND->N8->ND8->N68->D68->568 这是568的最右推导。
好像难度一般吧。
下面看看第7题。
7:写一个文法,使其语言是奇数集,而且每个奇数不以0开头。
G(S):
S->E|AE
E->1|3|5|7|9
A->AD|N
D->0|N
N->2|4|6|8|E
首先S能得到E。E可以是1,3,5,7,9,这就说明得到了只有一位的奇
第二章学习的是高级语言及语法描述,首先是程序语言的定义,从语法语义
方面来定义语言。接下来是高级语言的一般特性,高级语言的分类包括强制式语言
,应用式语言,基于规则的语言和面向对象语言,本章的重点是上下文无关文法,
下面选择书本后面的练习题来说明:
T6:N -> D|ND,D -> 0|1|2|3|4|5|6|7|8|9,问它的语言
L是什么?N能转换成D,也就是能得到0到9的一位数字,或者N推出ND,N继续推出0到9的数字,
于是L的语言就是一窜由0到这10个数字组成的一个窜,至少是1位,至多不限。(2)给出0127,34,568
的最左推导和最右推导。
这里只展示568的做法,另外两个类似:
N->ND->NDD->DDD->5DD->56D->568 这是568的最左推导。
N->ND->N8->ND8->N68->D68->568 这是568的最右推导。
好像难度一般吧。
下面看看第7题。
7:写一个文法,使其语言是奇数集,而且每个奇数不以0开头。
G(S):
S->E|AE
E->1|3|5|7|9
A->AD|N
D->0|N
N->2|4|6|8|E
首先S能得到E。E可以是1,3,5,7,9,这就说明得到了只有一位的奇