Language agnostic 具有字符数的语言可以用上下文无关语法描述吗?

Language agnostic 具有字符数的语言可以用上下文无关语法描述吗?,language-agnostic,context-free-grammar,Language Agnostic,Context Free Grammar,我正在看一份关于德国HBCI/FinTS协议的报告。该协议的一个特点是它可以包含二进制blob,其前缀为@NUM\u of_binary\u CHARS@。否则,协议非常简单,语法可描述如下(稍微简化,终端引用“): 示例消息可能如下所示 FirstSegment+Elem1+Item1:Item2+@4@:'+@+The_last_four_chars_are_binary+Elem4'SecondSegment+Elem5' 这种语言(带有二进制字符串转义)可以用上下文无关语法描述吗?不,

我正在看一份关于德国HBCI/FinTS协议的报告。该协议的一个特点是它可以包含二进制blob,其前缀为
@NUM\u of_binary\u CHARS@
。否则,协议非常简单,语法可描述如下(稍微简化,终端引用“):

示例消息可能如下所示

FirstSegment+Elem1+Item1:Item2+@4@:'+@+The_last_four_chars_are_binary+Elem4'SecondSegment+Elem5'

这种语言(带有二进制字符串转义)可以用上下文无关语法描述吗?

不,这种语言不是上下文无关的。您所描述的格式本质上与这种语言等价

{@n@w| n是一个自然数,| w |=n}

可以通过使用上下文无关的泵引理来说明这不是上下文无关的。让泵长为p,考虑字符串。1p@x1111...1(p倍)。这是一段二进制数据的字符串编码,显示长度为111…1(p倍)。现在将字符串拆分为u、v、x、y、z,其中| vy |>1和| vxy |≤ p、 如果v或y是@符号,则uv0xy0z不在语言中,因为它没有足够的@符号。如果v和y纯粹包含在1p中,则向上抽取字符串将最终生成一个不在语言中的字符串,因为二进制数据字符串的大小不正确。类似地,如果v和y纯粹包含在x111…1中(p次),向上或向下泵送将使有效负载的大小错误。最后,如果v在长度字段中,而x在有效负载中,同时向上泵送v和x将使有效负载的长度错误,因为v以十进制形式写入(因此每个额外字符将有效负载的大小增加十倍),而x的长度不是


希望这有帮助!

这个问题似乎离题了,因为它是关于计算机科学理论,而不是一个特定的编程问题。已经在@a.Webb进行了提问和回答,谢谢你的提醒。我不确定,因为1)我需要在编程环境中使用这个问题,2)在SO有很多关于CFGs的问题。请检查下一次是CSTheorySE。谢谢你的回答!我确实快速查看了上下文无关的泵送引理,但我不知道如何在这种情况下应用它。你的解释非常好!
FirstSegment+Elem1+Item1:Item2+@4@:'+@+The_last_four_chars_are_binary+Elem4'SecondSegment+Elem5'