各种标记语言都有关闭标签, 是解析器太弱的原因吗?
HTML 有关闭标签, 微软的 XAML 有关闭标签, Flex 开发有关闭标签, 基于 XML 衍生的也都有,
感觉比较反人类的设计...
我尝试过 pegjs, 相比关闭标签的方式, 缩进似乎难得多, 其他的词法解析方案是不是也类似, 成本太大所以人们都宁愿别人开发时候搞一堆关闭标签?
update:
主要讨论常用开发中的 HTML, XML 衍生语言等等, 文本标记语言比如 Markdown 不在讨论范围里.
现在已有 Jade, HAML, Slim, Blade 等多种编译解析到 HTML 的语言, 证明技术上完全是成熟的, 这样大家都用 XML 这样的标记语言, 多少让人怀疑是为了那么一点点开销么?
春原阳平君
11 years ago
Answers
有闭合标签更容易于解析,而且反之容易造成歧义。
比如我举个 HTML 的例子:
<div>
<span>
<a href="#tag2">tag 2</a>
</span>
<a href="#tag3">tag 3</a>
</div>
如果省略闭合标签:
<div>
<span>
<a href="#tag2">tag 2
<a href="#tag3">tag 3
解析器便无法确定代码的真正意图了:tag 3 究竟是在 span 的外面还是里面?傻傻分不清楚 :-)
其实其他编程语言的语句块也是一样:C++ 的
{...}
,Ruby 的
begin...end
,Lisp 的
(...)
等,都需要有明确的层次分割。毕竟没闭合的标签人类都解析不了 ;)
寻找真心人
answered 11 years ago