语法推导树
语法推导树必须具有的特征:
首先理解此处和文法有关,文法公式G={Vn,Vt,P,S}
1.每个结点都有一个标记,此标记是V的一个符号。(这个标记必须是终结符或者非终结符中的一个)
2.根的标记是S(开始符)
3.若一结点n至少有一个它自己除外的子孙,并且有标记A,则A肯定在Vn中。(如果一个结点有子孩子,则这个结点肯定不是终结符)
4.如果结点n的直接子孙,从左到右的次序是结点n1,n2,。。。nk,其标记分别是A1,A2,。。。Ak。那么A->A1,A2.。。Ak。一定是P中的一个产生式。(父亲结点推出子结点值得序列必须包含在P中)
判断是否符合文法推到树
- 推到树种所有节点(SaAb)都属于V中的元素 (符合)
- 根的标记为S (符合)
- 如果一个节点存在除自己以外的子孙 ,则这个节点一定在VN中,也就是非终结符(符合)
- S->aAS,A->SbA出现在文法中 (符合)
所以这个推导树是文法推到树
例题:
第一步:拆分文法
S->aAs,
S->a,
A->SbA,
A->SS,
A->ba
第二步:对照句型aabAa,根节点为S,S->a不符合只能选择S->aAs
第三步:选择A的子节点A->SbA符合aabAa,S->a符合aabAa
第四步:S->a符合aabAa
短语、简单短语、句柄、素短语、最左推导、句子概念:
令G是一文法,S是文法的开始符号,abc是文法G的一个句型。
短语:如果S经过若干步骤推导出aAc且A经过1或者多步推出b,则称b是句型abc相对于非终结符A的短语;
如果有了一棵语法推导树,则这棵推导树上任意一棵子树的叶子结点的序列就是一个短语。
简单短语:如果A直接推出b,则b是句型abc相对于规则A→b的直接短语(简单短语)
句柄:一个句型的最左直接短语称为该项句型的句柄;
素短语:是个短语,并且至少含有一个终结符,并且,除它自身之外不再含任何更小的素短语。
最左推导:对句型右部的最左非终结符进行推导。