构造语法生成的语言

时间:2016-02-15 06:14:09

标签: grammar automata formal-languages

我们必须找到L(G),其中语法G给出为 -

  

S-> AB | CD,A-> aA | a,B-> bB | bC,C-> cD | d,D-> aD | AD < / p>

我已经尝试了这个问题,但它的递归非常深,我无法终止字符串。[我知道A会在n步之后生成^ n但是D,C,B怎么样?]

直到现在我尝试如下 -

A->aA->aaA->....->a^(n-1)A (after n-1 steps)->a^n
B->bB->bbB->....->b^(m-1)B (after m-1 steps)->b^(m-1)bC->b^(m-1)bbC->...b^(m-1)b^(n-1)C->b^kC
C->cD->ccD->...->c^(p-1)D or c^(p-1)d[Thus we will consider as C->c^pD or C->c^pd]
D->aD->aaD->...->a^(q-1)D->a^(q-1)a^nD[Thus we will consider D->a^rD]

现在B依赖于C而C取决于D和D取决于它自己(即D自身重复为D-> a ^ rD)

那么如何才能找到不终止的语言语法?

1 个答案:

答案 0 :(得分:1)

D不会产生一串终端,所以它没用,可以省略,包括所有带D的规则。

简化的语法是:

S->AB, A->aA|a ,B->bB|bC, C->d

语言将是:{a ^ m b ^ n d:m,n&gt; = 1}