编译原理---语法树(推导树)

软件工程学生应该掌握语法树的构造方法

知识如下:

语法树推导树)是用来描述上下文无关文法(2型文法)的句型推导的直观工具。
文法形如:G=(VN,VT,P,S)
其中P是规则(产生式),形如:α->β
并且V=VN∪VT
这棵树满足4个条件

  1. 树的每个节点都有一个标记,此标记是V的一个符号。(意为:每个节点都是一个非终结符或者一个终结符)
  2. 根的标记是S。(树总是从S识别符开始的)
  3. 若一个结点n的直接子孙,并且有标记A,则A肯定在VN中。(孩子结点是对非终结符进行替换产生的)
  4. 如果结点的直接子孙从左到右的次序是结点n1,n2,n3……nk,其标记分别为A1,A2……Ak,那么A->A1 A2……Ak一定是P中的一个产生式。(产生式的左部,就是父节点右部,就是孩子结点)

例题:
编译原理---语法树(推导树)_第1张图片

首先,S(开始符)推导出对应的句子
在这里插入图片描述
编译原理---语法树(推导树)_第2张图片

编译原理---语法树(推导树)_第3张图片
存在某个文法,他的一个句型的语法树是唯一
如果同一个句型有两个不同的语法树构造,说明可以有两种语法去理解他,说明该文法有二义性,是会造成歧义的。所以我们要求我们的语法能够进行编译的语法必须是无二义性的。

你可能感兴趣的:(编译原理(课程笔记))