形式上和非正式地描述了这种语法的语言

时间:2014-11-09 16:31:17

标签: theory proof automata formal-languages

我有一个问题,我希望得到一些帮助:

正式和非正式地描述以下语法的语言G =(Σ,N,S,P)

Σ = {a,b,c}
N = {S,T,X}
S = S
p = {
S->aTXc,
S->bTc,
T->aTX,
T->bT,
TXX->T,
Tc->*empty set*,
TXc-a>
}

此外,简要而非正式地解释这种语法如何产生其语言。

提示:使用| w | x表示法来描述该语法的语言。

1 个答案:

答案 0 :(得分:0)

我相信语法的语言

S   → bTc | aTXc
T   → bT | aTX
TXX → T
Tc  → λ
TXc → a

(a|b)+。首先,考虑使用T生成的T的派生:

T ⇒* bnT   (T → bT)
T ⇒* anTXn (T → aTX)

其中n > 0。由于T → bTT → aTX可以任意顺序应用,因此可以遵循

T ⇒* uTX|u|a

其中u的格式为(a|b)+|u|a ≥ 0。接下来,考虑生产TXX → T

T ⇒* uTX|u|a ⇒* uTX1(|u|a (mod 2) ≡ 1)

其中1(P) = 1P,否则是0。将其与S作品一起,我们拥有:

S ⇒ bTc ⇒* buTX1(|u|a (mod 2) ≡ 1)c ⇒ buTc ⇒ bu
S ⇒ aTXc ⇒* auTX1(|u|a (mod 2) ≡ 1)Xc ⇒ auTXc ⇒ aua

如果|u|a (mod 2) ≡ 0

S ⇒ bTc ⇒* buTX1(|u|a (mod 2) ≡ 1)c ⇒ buTXc ⇒ bua
S ⇒ aTXc ⇒* auTX1(|u|a (mod 2) ≡ 1)Xc ⇒ auTXXc ⇒ auTc ⇒ au

如果|u|a (mod 2) ≡ 1其中u的格式为(a|b)+。在上述派生的最后一步中,应用更多的T产生式不会生成具有不同形式的字符串。因此,我相信所有可派生的字符串都具有(a|b)+的形式。我担心的是,您被指示使用|u|a表示法来描述语法的语言,因此这种信念可能是错误的。