[英]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
可以扩展为0B
或1A
。 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可以具有以下字符串:
{100,0100,1001,1010,01001,10011,10101,010011,0100111,......}
因此,此CFG可以具有以下任何类型的字符串:
length> = 3,通过观察我们得到的最小长度字符串可以是100:
S --> A --> 1B --> 10C --> 100D --> 100e --> 100
通过观察每个步骤中的字符串,您可以轻松地获得此CFG可以具有任何三种类型的字符串的特性。
因此,此CFG描述了一种具有以上3个属性的上下文无关语言。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.