如何构造生成此语言的语法?

时间:2009-06-20 15:48:49

标签: grammar context-free-grammar automata

我正在研究有限的自动机和语法测试,我坚持这个问题:

Construct a grammar that generates L:
L = {a^n b^m c^m+n|n>=0, m>=0}

我相信我的作品应该遵循这条路线:

    S->aA | aB
    B->bB | bC
    C->cC | c Here's where I have doubts

我的C作品如何记住m和n的数量?我猜这必须是一个无上下文的语法,如果是这样,应该怎么做?

6 个答案:

答案 0 :(得分:6)

似乎应该像:

A->aAc | aBc | ac | epsilon
B->bBc | bc | epsilon

你需要在施工过程中强制计算C'c。为了显示它的上下文,我会考虑使用Pump Lemma

答案 1 :(得分:2)

是的,这听起来像家庭作业,但提示:

每次匹配'a'时,您必须匹配'c'。相同的匹配'b'。

答案 2 :(得分:2)

S -> X
X -> aXc | Y
Y -> bYc | e

其中e == epsilonX是不必要的,但是 为清晰起见而添加

答案 3 :(得分:0)

S-> ASC | A A-> BAC |λ

这意味着当你得到一个至少你有1 c或如果你得到a和b你必须有2 c。 我希望它有所帮助

答案 4 :(得分:0)

好吧,伙计们,我就是这样做的:

P={S::=X|epsilon,
   X::=aXc|M|epsilon,
   M::=bMc|epsilon}

答案 5 :(得分:0)

我的答案:

S-> aAc |密码

A-> bc | bAc

其中S是开始符号。