编译原理第二章-高级语言及其语法描述

编译原理:语言的转换。

第二章

1、知识点图:

编译原理第二章-高级语言及其语法描述_第1张图片

~~~我感觉重要的知识:

程序的层次结构:

编译原理第二章-高级语言及其语法描述_第2张图片

程序设计语言的定义:

建立在有限字母集之上的一个符号系统,有一定的语法和语义规则

语法规则:词法规则和语法规则

语义规则:描述语法单位的功能和含义

程序的功能是描述数据和对数据的运算

上下文无关文法:

文法是描述语言的语法结构的形式规则(即语法规则)
上下文无关文法的特点
它所定义的语法范畴(或语法单位)是完全独立于这种范畴可能出现的环境的。
特点:独立性

缺点:不能用来描述自然语言

0、1、2、3型文法比较:

编译原理第二章-高级语言及其语法描述_第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:编译原理第二章-高级语言及其语法描述_第4张图片i+i*i编译原理第二章-高级语言及其语法描述_第5张图片

3、课堂感受:

       听完第二章的课程,我感受到了编译原理不亏是原理课,许多知识需要理解和掌握,不过,要说对于第二章的理解,就是得静下心来看,以为大体一看很难懂,仔细一看其实并不很难,继续努力吧!

你可能感兴趣的:(编译原理第二章-高级语言及其语法描述)