不
请参阅下面的编辑
这取决于。
如果您谈论的是仅包含理论 HTML 的子集,那么是的。
如果您还包括现实生活中的工作 HTML,每天有数百万人在 Internet 上的许多顶级网站上成功访问和使用,那么NO。
这就是赋予 HTML 灵活性的原因。解析引擎添加标签、关闭标签,并处理理论上 CFG 无法完成的事情。如果您使用自动机,您可能会记得形式语法中的生产规则在 lhs(左侧)上不能为空(又名 epsilon/lambda)。由于解析引擎基本上使用了形式语法和自动机所没有的知识,因此它不受此限制,并且“语法”将epsilon/lambda -> result
根据语法中不可用的信息选择特定的 epsilon/lambda 规则.
由于我认为任何形式语法都不允许空 lhs,因此 HTML 不能由形式语法定义,并且根本不是形式语言。
当然,HTML5 可能会尝试转向“更正式”的语言描述,但它成为现实中无上下文语言的可能性(即与语法不匹配的字符串被拒绝)与 XHTML 2.0 席卷世界的可能性有关完全取代了 HTML(XHTML 是他们试图使 HTML 成为一种正式语言的尝试……由于其脆弱性而被集体拒绝)。
值得注意的是,HTML 5 是第一个在实施之前定义的 HTML 标准!没错,HTML 1-4 由一些刚刚在浏览器中实现的随机想法组成,并在基于哪些特性被广泛使用和广泛实现之后被收集到标准中。然后他们尝试了XHTML,完全没有被采用。甚至网络上的“xhtml”在几乎所有情况下都会自动解析为 HTML,以防止内容因神秘的语法错误而中断。现在你可以看到我们是如何到达这里的,以及为什么它不太可能很快正式化。
教训:“理论上,理论和实践没有区别。实践中,有区别。” - 瑜伽士贝拉
编辑:
实际上,通读文档后发现,即使根据 HTML 4.01 规范,HTML 实际上并不符合 SGML。要亲自查看,请查看http://www.w3.org/TR/html4/strict.dtd上的 HTML 4.01 Strict 文档类型定义 (doctype)并注意以下几行:
HTML 4.01 规范包括不能在 DTD 中表达的附加句法约束。
所以我想说,由于这些特性,它可能不是 CFL(尽管从技术上讲,它并没有反驳存在一些可能的 PDA 接受 HTML 4.01 的假设,但它确实阻止了 SGML 是 CFL 因此 HTML 是节能灯)。
HTML5 触发器,放弃任何对 SGML 的隐含一致性,但大概可以由 CFG 描述。然而,它仍然会提供不基于 cfg 的尽力而为解析,因此 IMO 在这方面的当前情况(即语言规范已正式定义,无效字符串仍被接受、解析和呈现)在这方面不太可能在很长很长很长时间内发生巨大变化。