📅  最后修改于: 2020-11-26 10:11:00             🧑  作者: Mango
可以从语法派生的所有字符串的集合被称为是从该语法生成的语言。语法G产生的语言是由
L(G)= {白| W∈Σ*,S⇒ģW】
如果L(G1)= L(G2) ,则语法G1等于语法G2 。
如果有语法
G:N = {S,A,B} T = {a,b} P = {S→AB,A→a,B→b}
下面就产生AB,而且我们可以用b通过替换A,和B。在这里,唯一接受的字符串是ab ,即
L(G)= {ab}
假设我们有以下语法-
G:N = {S,A,B} T = {a,b} P = {S→AB,A→aA | a,B→bB | b}
该语法生成的语言-
L(G)= {ab,a 2 b,ab 2 ,a 2 b 2 ,……}
= {a m b n | m≥1和n≥1}
我们将考虑一些语言,并将其转换为产生这些语言的语法G。
问题-假设L(G)= {a m b n | m≥0且n> 0}。我们必须找出产生L(G)的语法G。
解
由于L(G)= {a m b n | m≥0且n> 0}
接受的字符串集可以重写为-
L(G)= {b,ab,bb,aab,abb,……。}
此处,起始符号必须至少包含一个“ b”,后跟任意数量的“ a”,包括null。
为了接受字符串集{b,ab,bb,aab,abb,……。},我们采用了产生式-
S→aS,S→B,B→b和B→bB
S→B→b(已接受)
S→B→bB→bb(接受)
S→aS→aB→ab(已接受)
S→aS→aaS→aaB→aab(已接受)
S→aS→aB→abB→abb(已接受)
因此,我们可以证明L(G)中的每个字符串都可以被生产集生成的语言接受。
因此语法-
G:({S,A,B},{a,b},S,{S→aS | B,B→b | bB})
问题-假设L(G)= {a m b n | m> 0且n≥0}。我们必须找出产生L(G)的语法G。
解决方案–
由于L(G)= {a m b n | m> 0并且n≥0},则可以将接受的字符串集重写为-
L(G)= {a,aa,ab,aaa,aab,abb,……。}
在这里,开始符号必须至少包含一个’a’,然后是任意数量的’b’,包括null。
为了接受字符串集{a,aa,ab,aaa,aab,abb,……。},我们采用了产生式-
S→aA,A→aA,A→B,B→bB,B→λ
S→aA→aB→aλ→a(已接受)
S→aA→aaA→aaB→aaλ→aa(已接受)
S→aA→aB→abB→abλ→ab(已接受)
S→aA→aaA→aaaA→aaaB→aaaλ→aaa(已接受)
S→aA→aaA→aaB→aabB→aabλ→aab(已接受)
S→aA→aB→abB→abbB→abbλ→abb(已接受)
因此,我们可以证明L(G)中的每个字符串都可以被生产集生成的语言接受。
因此语法-
G:({S,A,B},{a,b},S,{S→aA,A→aA | B,B→λ| bB})