📜  无上下文语法介绍

📅  最后修改于: 2020-11-26 10:16:17             🧑  作者: Mango


定义-由有限的语法规则集组成的无上下文语法(CFG)是四元组(N,T,P,S) ,其中

  • N是一组非终结符。

  • T是一组端子,其中N = T = NULL。

  • P是一组规则, P:N→(N∪T)* ,即生产规则P的左侧确实具有任何右上下文或左上下文。

  • S是开始符号。

  • 语法({A},{a,b,c},P,A),P:A→aA,A→abc。
  • 语法({S,a,b},{a,b},P,S),P:S→aSa,S→bSb,S→ε
  • 语法({S,F},{0,1},P,S),P:S→00S | 11F,F→00F | ε

派生树的生成

派生树或分析树是有序的根树,它以图形方式表示从上下文无关文法派生的字符串的语义信息。

表示技术

  • 根顶点-必须用开始符号标记。

  • 顶点-用非终端符号标记。

  • 叶子-用终极符号或ε标记。

如果S→x 1 x 2 …x n是CFG中的生产规则,则解析树/派生树将如下所示-

衍生树

绘制派生树有两种不同的方法-

自上而下的方法-

  • 以起始符号S开头

  • 依靠生产来变成树叶

自下而上的方法-

  • 从树叶开始

  • 向上前进到作为起始符号S的根

一棵树的派生或产量

解析树的派生或屈服是通过从左到右串联树的叶子的标签而忽略Null所获得的最终字符串。但是,如果所有叶子均为Null,则导数为Null。

设CFG {N,T,P,S}为

N = {S},T = {a,b},起始符号= S,P = S→SS |抗体ε

上述CFG的一种衍生形式是“ abaabb”

S→SS→aSbS→abS→abaSb→abaaSbb→abaabb

一棵树的产量

句子形式和偏导树

局部派生树是派生树/解析树的子树,因此其所有子级都在子树中,或者它们都不在子树中。

如果在任何CFG中,产生的结果是-

S→AB,A→aaA | ε,B→Bb | ε

偏导树可以如下-

句子形式和偏导树

如果部分派生树包含根S,则称其为语句形式。上面的子树也采用句子形式。

字符串的最左和最右派生

  • 最左边的导数-通过在每个步骤中对最左边的变量应用乘积来获得最左边的导数。

  • 推导-通过在每个步骤中将生产应用于最右变量来获得最右推。

将CFG中的任何生产规则集设为

X→X + X | X * X | X |一种

在字母{a}上。

字符串“ a + a * a”的最左派生可以是-

X→X + X→a + X→a + X * X→a + a * X→a + a * a

上面的字符串的逐步推导如下所示-

最左边

上面的字符串“ a + a * a”的最右派生可以是-

X→X * X→X * a→X + X * a→X + a * a→a + a * a

上面的字符串的逐步推导如下所示-

最右边

左右递归语法

在无上下文语法G中,如果存在形式为X→Xa的生成式,其中X为非终结式,而‘a’为终结式字符串,则称为左递归生成。具有左递归生成的语法称为左递归语法

并且,如果在无上下文语法G中,如果产生形式为X→aX ,其中X是非终结符,而‘a’是终结字符串,则称为右递归产生。具有右递归产生式的语法称为右递归语法