构建一个CFG

时间:2012-02-23 02:39:07

标签: context-free-grammar formal-languages

L1 = {a ^ i b ^ j | i,j> = 0}

我的尝试:

S = SA|e

A = aAB|e

B = bB|e

我无法确认我的答案,这是正确的吗?

2 个答案:

答案 0 :(得分:2)

这是不正确的,因为没有办法获得单个“b”(或任何数量的“b”没有任何“a”)。

(我认为你可以通过改变一个字母来修复它; o)

PS很抱歉早先的错误回复;以为这是为了i = j。

答案 1 :(得分:1)

您定义L1 = {a ^ i b ^ j | i,j> = 0}。换句话说,这是所有字符串的语言,以零或多个a开头,以零或多个b结尾。这是一种常规语言;它的正则表达式是* b *。常规语法(也是无上下文语法)如下:

S := lambda | aS | bT
T := lambda | bT

另一个无上下文语法如下:

S := lambda | aS | Sb

很抱歉,如果我遗失了某些内容,而且您的语言比我正在阅读的内容更复杂。如果您有理由相信如此定义的L1与我所描述的语言不同,请解释。