从理论上讲,BNF是否足以描述所有文件格式?

时间:2011-08-01 01:15:06

标签: theory bnf

是否存在BNF无法描述的任何文件格式?

2 个答案:

答案 0 :(得分:1)

不,BNF还不够。 BNF描述context-free grammars,它甚至不接近所有可以想象的语法。几乎所有的编程语言,大多数(如果不是全部)理智的数据序列化格式等等。 无上下文,但既然你问过理论,答案就是否定。对于初学者,有context-sensitive grammars,(如果名称没有提示你),不能用无上下文语法表达。一个简单的例子是na,然后是nb,然后是nc(同一n每个)。

此外,语法只描述语法或语法。根据文件格式的不同,某些格式的数据可能需要更多才能生效(格式正确) - 例如,想一想编程语言中的类型检查。您无法使用无上下文语法或大多数语法来描述此类语义约束。可能有一些高度复杂的理论可以做到这一点。当然,它们相应地是不切实际的。

答案 1 :(得分:0)

是。 BNF仅描述无上下文语法。如果文件包含其自身语法的描述,则无法在BNF中表示读取此类文件的规则。你需要一台图灵机。同样,如果接受或拒绝文件的决定不能通过下推自动机来表示,那么bnf也不会起作用。

例如,

BNF无法完美地描述英语语法。