繁体   English   中英

谁能向我解释这种与上下文无关的语法?

[英]Can anyone explain this context-free grammar to me?

我需要为作业做些了解。 告诉我这一点,您不会给我答案,您只是在帮助我理解所提出的问题。

我阅读了课堂笔记,这些笔记并没有什么帮助,还可以在Internet上搜索不受上下文限制的语法信息。 我找不到任何看起来像我得到的东西,而且我很困惑。

如果有人可以告诉我这个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> | ε

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描述。

我们将从S展开,该S可以扩展为A或e。

expr = S

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

expr = A      (S ->A)

A可以扩展为0B或1A。 对于我们的弦,我们将使用1A。

expr = 1A     (A ->1A)

现在1A有了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)

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

以上几行是CFG的一部分

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

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

CFG解决方案

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

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

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

因此,此CFG可以具有以下任何类型的字符串:

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

     S --> A --> 1B --> 10C --> 100D --> 100e --> 100 

通过观察每个步骤中的字符串,您可以轻松地获得此CFG可以具有任何三种类型的字符串的特性。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM