任何人都可以向我解释这种无上下文语法吗?

时间:2016-11-20 04:41:08

标签: theory context-free-grammar

我需要理解这个作业。告诉我这件事,你不会给我答案,你只是帮助我理解被问到的问题。

我读过我的课堂笔记,这些笔记不是很有帮助,以及在互联网上搜索无上下文语法信息。我找不到任何看起来像我被给予的东西,我很困惑。

如果有人能告诉我这篇CFG描述的内容,或者给我一个很好的资源来解释这个主题,我会非常感激。

CFG是这样的:

S是起始符号

<S> → <A> | ε
<A> → 0<B> | 1<A>
<B> → 0<C> | 1<B>
<C> → 0<D> | 1<C>
<D> → 1<D> | 0<B> | ε

2 个答案:

答案 0 :(得分:0)

CFG定义了一个字符串模式。

这里的字符串可以是1,0,e。(字母)的模式 CFG的规则告诉我们如何将表达式扩展为字母表字符串。

<S> → <A> | ε
<A> → 0<B> | 1<A>
<B> → 0<C> | 1<B>
<C> → 0<D> | 1<C>
<D> → 1<D> | 0<B> | ε

此处A可以扩展为0B1A。 LHS只能扩展。

给定一个字符串,您可以验证它是否由CFG描述。

让我们拿1000,然后看看这个CFG是否描述过。

我们将从可以扩展到A或e的S开始。

expr = S

e是一个特殊符号,表示字符串终止。 我们将使用A,因为它给了我们希望,而不是以e终止。

expr = A      (S ->A)

A可以扩展到0B或1A。对于我们的字符串,我们将使用1A。

expr = 1A     (A ->1A)

现在1A有A.查看规则表A可以扩展到0B或1A。我们将采用0B,因为它遵循给定的字符串。所以现在我们的结果是10B。

expr = 10B    (A -> 0B)

查找B扩展到0C或1B。我们将采用0C,因为它符合我们给定的模式。因此我们的字符串变为100C。

expr = 100C   (B -> 0C)

同样,您可以继续扩展表达式并以e。

结束
expr = 1000D  (C -> 0D)
expr = 1000e  (D -> e)

答案 1 :(得分:0)

CFG:无上下文语法(CFG)是形式语言理论中用来描述某种形式语法的术语。在无上下文语法中,所有规则都是一对一的,一对多,或一对一。由无上下文语法生成的语言称为无上下文语言(CFL)。不同的无上下文语法可以生成相同的无上下文语言。区分语言的属性和特定语法的属性很重要。语言相等问题(两个给定的无上下文语法生成相同的语言?)是不可判定的。

以上行是从CFG

中选择的

简而言之,从任何给定的CFG我们都试图找出可以在该CFG中描述的字符串集。这些字符串组成了特定CFG的语言。

以下是图形形式的问题解决方案:

CFG solution

在解决方案中,矩形框中的字符串是终止步骤。

因此给定的CFG可以有如下字符串:

{100,0100,1001,11010,01001,10011,10101,010011,0100111,......}

所以这个CFG可以有任何类型的字符串:

  1. 至少一个1,
  2. 至少两个0,和
  3. 长度&gt; = 3,通过观察我们得到的最小长度字符串可以是100:

    S --> A --> 1B --> 10C --> 100D --> 100e --> 100
    
  4. 通过观察每一步的字符串,你可以很容易地得到这个CFG可以有任何类型的字符串,它有三个属性。

    因此,这篇CFG描述了一个具有3个以上属性的无上下文语言。