软件工程学生应该掌握语法树的构造方法
知识如下:
语法树(推导树)是用来描述上下文无关文法(2型文法)的句型推导的直观工具。
文法形如:G=(VN,VT,P,S)
其中P是规则(产生式),形如:α->β
并且V=VN∪VT
这棵树满足4个条件
- 树的每个节点都有一个标记,此标记是V的一个符号。(意为:每个节点都是一个非终结符或者一个终结符)
- 根的标记是S。(树总是从S识别符开始的)
- 若一个结点n的直接子孙,并且有标记A,则A肯定在VN中。(孩子结点是对非终结符进行替换产生的)
- 如果结点的直接子孙从左到右的次序是结点n1,n2,n3……nk,其标记分别为A1,A2……Ak,那么A->A1 A2……Ak一定是P中的一个产生式。(产生式的左部,就是父节点右部,就是孩子结点)
例题:
首先,S(开始符)推导出对应的句子
存在某个文法,他的一个句型的语法树是唯一的
如果同一个句型有两个不同的语法树构造,说明可以有两种语法去理解他,说明该文法有二义性,是会造成歧义的。所以我们要求我们的语法能够进行编译的语法必须是无二义性的。