程序设计语言——编译原理 第二章总结
程序设计语言——编译原理
第二章总结
知识点
程序设计语言的定义
语法是语言结构的形式描述;分词法规则与语法规则;词法规则定义了单词符号的形成,语法规则定义了语法单位的形成。
但由字母表组成的单词构成的语句满足构成规则但其意义无法理解,这便是语义问题。
高级语言的特点
高级语言的分类;数据类型;操作;语句。
程序设计语言的语法描述
字母表;连接积;闭包;正规则闭包;文法;上下文无关文法;产生式;最左推导;最右推导;语法分析树;语法二义性,0型文法,1型文法,2型文法,3型文法
1.上下无关文法可由四元组表示,(VT,VN,S,P)
VT是一个非空有限集,它的每一个元素称为终结符号;
VN是一个非空有限集,它的每一个元素称为非终结符号,VT∩VN=空集;
S是一个非终结符号,称为开始符号;
P是一个产生式(有限)集合,每个产生式形式是A→a ,其中,P∈VN, a ∈( VT∪VN)*
开始符号S至少必须在某一产生式的左部出现一次。
3.
- 文法与语言的转换
1.由文法推其语言
课后题 6
求文法G6的语言L(G6)
N——>D|ND
D——>0|1|2|3|4|5|6|7|8|9
L(G6)是由0~9组成的符号串;
课后题 7
求奇数集的文法,不以0开头
2.由语言推其文法
课后题11
分析:L1可知a与b是同时出现,c可不出现,即为空字。
L2可知c与b是同时出现,a可不出现,即为空字。
L3可知a与b是同时出现,但有两种组合,还可出现空字。
L4可知1与0是同时出现,0与1是同时出现,在10的组合中出现01,还可为空字。
- 最左推导与最右推导
课后题6求0127,34,568的最左推导,最右推导
课后题8
求i+i*i,i*(i+i)的最左推导,最右推导
- 文法二义性的判定与消除
文法的二义性是不可判定的。
文法的二义性证明:找出一个句子,它有两个不同的最左推导或最右推导。
文法二义性的消除:给每个产生式定义优先级。
如课后题9,10
体会
编译原理的学习比较偏理论化,要注重理解记忆,而且涉及到许多数学知识尤其是离散数学,感觉忘得差不多了。在上述总结中我只是把知识点列出来,并未详细解释。只是总结,定义列出也没有大用处,要记在脑子里,在知识的巩固下,还要掌握知识的运用,我在做题的过程中就运用的时候不太会。尤其要注意推导的时候的错误,不要老是犯错。