是否存在BNF无法描述的任何文件格式?
答案 0 :(得分:1)
不,BNF还不够。 BNF描述context-free grammars,它甚至不接近所有可以想象的语法。几乎所有的编程语言,大多数(如果不是全部)理智的数据序列化格式等等。 无上下文,但既然你问过理论,答案就是否定。对于初学者,有context-sensitive grammars,(如果名称没有提示你),不能用无上下文语法表达。一个简单的例子是n
次a
,然后是n
次b
,然后是n
次c
(同一n
每个)。
此外,语法只描述语法或语法。根据文件格式的不同,某些格式的数据可能需要更多才能生效(格式正确) - 例如,想一想编程语言中的类型检查。您无法使用无上下文语法或大多数语法来描述此类语义约束。可能有一些高度复杂的理论可以做到这一点。当然,它们相应地是不切实际的。
答案 1 :(得分:0)
是。 BNF仅描述无上下文语法。如果文件包含其自身语法的描述,则无法在BNF中表示读取此类文件的规则。你需要一台图灵机。同样,如果接受或拒绝文件的决定不能通过下推自动机来表示,那么bnf也不会起作用。
例如,BNF无法完美地描述英语语法。