编译原理:语言的转换。
第二章
1、知识点图:
~~~我感觉重要的知识:
程序的层次结构:
程序设计语言的定义:
建立在有限字母集之上的一个符号系统,有一定的语法和语义规则
语法规则:词法规则和语法规则
语义规则:描述语法单位的功能和含义
程序的功能是描述数据和对数据的运算
上下文无关文法:
文法是描述语言的语法结构的形式规则(即语法规则)
上下文无关文法的特点
它所定义的语法范畴(或语法单位)是完全独立于这种范畴可能出现的环境的。
特点:独立性
缺点:不能用来描述自然语言
0、1、2、3型文法比较:
2、验证使用(习题处理):
t-6:令文法G6为 N->D|ND
D->0|1|2|3|4|5|6|7|8|9
(1)G6的语言L(G6)是什么?
答:0-9组成的数字串。
(2)给出句子0127、34和568的最左推导和最右推导。
最左推导:
N->ND->NDD->NDDD->DDDD->0DDD->01DD->012D->0127;
N->ND->DD->3D->34;
N->ND->NDD->DDD->5DD->56D->568.
最右推导:
N->ND->N7->ND7->N27->ND27->N127->D127->0127;
N->ND->N4->D4->34;
N->ND->N8->ND8->N68->D68->568.
T-8:令文法为 E->T|E+T|E-T
T->F|T*F|T/F
F->(E)|i
(1)给出i+i*i、i*(i+i)的最左推导和最右推导:
最左:
E->E+T->T+T->F+T->i+T->i+T*F->i+F*F->i+i*F->i+i*i;
E->T->T*F->F*F->i*F->i*(E)->i*(E+T)->i*(T+T)->i*(F+T)->i*(i+T)->i*(i+F)->i*(i+i).
最右:
E->E+T->E+T*F->E+T*i->E+F*i->E+i*i->T+i*i->F+i*i->i+i*i;
E->T->T*F->T*(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).
(2)写出i+i+i、i+i*i的语法树:
i+i+i:i+i*i
3、课堂感受:
听完第二章的课程,我感受到了编译原理不亏是原理课,许多知识需要理解和掌握,不过,要说对于第二章的理解,就是得静下心来看,以为大体一看很难懂,仔细一看其实并不很难,继续努力吧!