Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/75.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Computer science 特定语言的上下文敏感语法_Computer Science_Formal Languages_Context Sensitive Grammar - Fatal编程技术网

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

Computer science 特定语言的上下文敏感语法,computer-science,formal-languages,context-sensitive-grammar,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,我想要多少c就多少c。 我的C产品如何能记住m和n的数字呢?一个选项是:生成一个字符串,每次生成一个C,您 不要生成任何其他内容 生成一个a与之配对

如何构造生成这种语言的语法? 构造生成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,我想要多少c就多少c。
我的C产品如何能记住m和n的数字呢?

一个选项是:生成一个字符串,每次生成一个
C
,您

  • 不要生成任何其他内容
  • 生成一个
    a
    与之配对
  • 生成一个
    b
    与之配对,或
  • 生成一个
    a
    和一个
    b
    以与之配对
这从这里开始:

→ X

X→ c | MXc | Xc

M→ A | B | AB

卑诗省→ 卑诗省

Ab→ ab

BA→ AB

(请注意,这部分是不完整的)。在这里,X扩展到字符串一侧的一系列
c
,这些
c在字符串的另一侧与
a
s和
B
s配对。
A
s和
B
s的产品都在那里,以确保它们在扩展之前按照正确的顺序重新排序

一个不考虑的情况是,如果有一个字符串ANCn+K,那么它可以被固定如下:

→ X | Y

X→ c | MXc | Xc

M→ A | B | AB

卑诗省→ 卑诗省

Ab→ ab

BA→ AB

Y→ aYc | Yc | c


希望这有帮助

这是个好主意!我想你忘了添加规则Ba->aB!如果我有这个字符串bbbaaaccc,我可以开始使用规则BA->AB,但我可以在这样的情况下使用:abaabbccc,没有规则在aBb中转换终端符号中的B。这是一个正式正确的情况,我不能再生成我的字符串了吗?