我一直在读: “有关创建上下文无关文法”学习之用,我几乎理解这个概念后,但我不太明白以下。
如果我们有:
米> = N}。
我明白这一点:
S --> B
B --> aBb
A --> aA
但我不明白的是增加这些特定的值,比如年底的概念:
S --> B | ^
B --> aBb | A
A --> aA | a
为什么我们加^(空),A, 和这些行的结束? 他们在做什么,为什么我们需要它们?
所有帮助是极大的赞赏。
我一直在读: “有关创建上下文无关文法”学习之用,我几乎理解这个概念后,但我不太明白以下。
如果我们有:
米> = N}。
我明白这一点:
S --> B
B --> aBb
A --> aA
但我不明白的是增加这些特定的值,比如年底的概念:
S --> B | ^
B --> aBb | A
A --> aA | a
为什么我们加^(空),A, 和这些行的结束? 他们在做什么,为什么我们需要它们?
所有帮助是极大的赞赏。
你需要他们能够构建在语言的字符串L
。
B --> aBb | A
B --> aBb | A
手段,如果你有一个非终结符B
它可以通过替换aBb
或 A
。 (大写字母表示非终结符和小写字母表示终端)。
让我们来看看语法:
S --> B | ^
B --> aBb | A
A --> aA | a
为什么我们有一个| ^
| ^
? 你需要它能够产生空字符串。 空字符串是明确语言的一部分L
,因为它包含的等量的a
S和b
秒。
为什么我们| A
| A
? 为了能够使用规则A
。 现在,您可以代替B
有A
让您可以插入或者aA
或a
。 你需要这个规则能够生成具有多个字符串a
总比b
秒。
为什么我们| a
| a
? 为了能够更换A
带有a
不增加新的非终结需要更换。
当我看到这个语法我要说的是,你需要改变A --> aA | a
A --> aA | a
到A --> aA | a | ^
A --> aA | a | ^
A --> aA | a | ^
能够与等量的生成字符串a
S和b
秒。 (所以你可以更换A
用空字符串(或空),而不必添加额外的a
)
比方说,你要生成的字符串aaabb
:
S //You start with S
B //Rule: S --> B
aBb //Rule: B --> aBb
aaBbb //Rule: B --> aBb
aaAbb //Rule: B --> A
aaabb //Rule: A --> a
是否需要额外的^,A和是完成语法集。
因此,A - > AA取的护理[AA,AAA,AAAA,...]
A - > AA | 一个需要照顾[A,AA,AAA,AAAA,...]
乙- > ABB需要照顾[AB,AABB,AAABBB,...]
因此,B - > ABB | A应照顾[A,AB,AA,AAB,AAA,AAAB,AABB,...]
只有一人失踪是^
所以,现在以S完成语法- > C | ^ [^,A,AA,AB,AAA,AAB,AAAA,AAAB,AABB,...]
正如你所看到的,它是不可能产生从上半场下半场,但它也是语法的一个子集。 因此,为了完成语法,即下半年是至关重要的为好。 看看维基百科的文章更清晰的例子。
http://en.wikipedia.org/wiki/Context-free_grammar