特定语言的上下文敏感语法

时间:2013-10-26 14:16:37

标签: computer-science formal-languages context-sensitive-grammar

如何构建生成此语言的语法? 构造一个生成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 | Cc ad尽可能多的c。 我的C作品如何记住m和n的数量。

1 个答案:

答案 0 :(得分:1)

一个选项如下:生成一个字符串,每次生成c时,您都

  • 不生成任何其他内容,
  • 生成a以与其配对,
  • 生成b以与其配对,或
  • 生成ab以与之配对。

这是从这里开始的:

  

S→X

     

X→c | MXc | XC

     

M→A | B | AB

     

Bc→bc

     

Ab→ab

     

BA→AB

(请注意,这部分不完整)。在这里,X扩展为字符串一侧的一系列c,它们在字符串的另一侧与AB s配对。 AB的制作是为了确保在展开之前将它们重新排序到正确的顺序。

如果您的字符串形式为 n c n + k ,则不会考虑这种情况,但可以修复如下:

  

S→X | ÿ

     

X→c | MXc | XC

     

M→A | B | AB

     

Bc→bc

     

Ab→ab

     

BA→AB

     

Y→aYc | Yc | ç

希望这有帮助!