您的位置:首页 > 其它

【浏览器渲染原理】解析和DOM树构建之解析

2014-02-13 11:38 831 查看
解析一个文档:将其转换成具有一定意义的结构,编码可以理解和使用的东西。

解析的结果通常是表达文档结构的节点树,称为解析树或语法树。

例如,解析2+3-1表达式,会返回解析树:



解析是以文档所遵循的规则为基础的。规则包括词汇表和语法规则。解析的过程可以分成:词法分析(Lexical Analysis)和语法分析(Syntax Analysis)。

词法分析(LexicalAnalysis)是将输入内容分割成大量标记的过程。常用的HTML标记有,<html>、<body>、<div>等。

语法分析(SyntaxAnalysis)是应用语言的语法规则的过程。常见的HTML语法规则有,图片、表格、链接。这些语法规则用来表示比“文本”更丰富的意义。浏览器知道HTML的语法,可以用来查看HTML文档。

解析工作通常由词法分析器和解析器来完成。词法分析器(也叫标记生成器),负责将输入内容分解成一个一个有效标记。解析器负责根据语法规则分析文档的结构,构建解析树。解析的过程如下图:



解析是一个迭代的过程。解析器会向词法分析器请求一个新标记,并尝试将其与某条语法规则进行匹配。如果发现了匹配规则,解析器会将一个对应于该标记的节点添加到解析树中,然后继续请求下一个标记。

如果没有规则可以匹配,解析器就会将标记存储到内部,并继续请求标记,直至找到可与所有内部存储的标记匹配的规则。如果找不到任何匹配规则,解析器就会引发一个异常。

解析器的基本类型:自上而下解析器和自下而上解析器。自上而下的解析器从语法规则出发,尝试从中找到匹配的结构。自下而上的解析器从结构出发,将输入内容逐步转化为语法规则,直至完全匹配。

【参考资料】

http://www.html5rocks.com/zh/tutorials/internals/howbrowserswork/#The_browsers_we_will_talk_about

http://taligarsiel.com/Projects/howbrowserswork1.htm

http://www.cssforest.org/blog/index.php?id=195
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: