【发布时间】:2011-03-10 04:21:42
【问题描述】:
为了论证的缘故,我们假设一个 HTML 解析器。
我读过它首先标记一切,然后解析它。
分词是什么意思?
解析器是否读取每个字符,构建一个多维数组来存储结构?
例如,它是否读取了<,然后开始捕获元素,然后一旦遇到关闭的>(在属性之外),它就会被推送到某个数组堆栈上?
为了了解而感兴趣(我很好奇)。
如果我通读 HTML Purifier 之类的源代码,是否可以很好地了解 HTML 是如何解析的?
【问题讨论】:
-
查看en.wikipedia.org/wiki/Lexical_parser 以获得非常简短的介绍;还可以查看
Parsing那里的文章。而 HTML Purifier 在某些时候正是这样做的。 -
HTML Agility Pack 是开源的,基于tokanizer。 htmlagilitypack.codeplex.com
-
如果你能读懂 C (ocaml, lisp),试试看一些关于 yacc/lex (ocamlyacc/ocamllex, cl-yacc/cl-lex...) 的教程。您将从代码中快速了解基础知识。如果你能读懂代码。
-
嗯,正则表达式可能是解释标记化的最简单方法,但在 HTML 的情况下,这还不够——我想说这可能是第一步,需要额外的处理。
标签: html browser parsing html-parsing tokenize