0

如何构造生成此语言的语法? 营造一个能产生一个语法L:特定语言的上下文相关语法

L = {a^n b^m c^k|k>n, k>m} 

我相信我的作品应该沿着这条线走:

S-> ABCC 
A-> a|aBC|BC 
B-> b|bBC 
C-> c|Cc 
CB->BC 

的想法是先从2 C,并保持经常多一个C,然后用C-> c |抄送广告尽可能多的c,因为我想要的。 我怎么能为C记录m和n的数字。

回答

1

一种选择是以下几点:生成在每次生成c一个字符串,你要么

  • 不会产生别的,
  • 产生a与配对,
  • 生成一个b与之配对,或者
  • 生成一个a和一个b与之配对。

在这里,这开始了:

小号→ X

X →Ç| MXc | Xc

M → A | B | AB

BC BC →

抗体→ AB

BA → AB

(注意,这是局部不完全)。在这里,X在字符串的另一侧与A s和B s成对配对,在字符串的一侧扩展为一系列cA s和B的制作可以确保它们在扩展之前按照正确的顺序重新排序。这种不考虑

一种情况是,如果你有以下形式的字符串ňÇN + K会发生什么,但可以固定如下:

小号→ X | Y

X → c | MXc | Xc

M → A | B | AB

BC → BC

抗体→ AB

BA → AB

Ÿ→ AYC | Yc | c

希望这有助于!

+0

这是一个明智的想法!我认为你忘了添加规则Ba-> aB! 如果我有这个字符串BBBAAAcccc 我可以开始使用规则BA-> AB但是然后我可以在这样的情况下存在:ABAaBbcccc,并且没有规则用于在终端符号中转换aBb中的B. 这是一个正式正确的情况下,我不能再生成我的字符串? – asdf

相关问题