因为解析是渲染引擎中一个非常重要的过程,所以我觉得有必要更加深入的了解一下解析过程。首先来介绍一下浏览器解析的规则。
所谓解析文档其实就是将文档内容转化为代码可以理解和使用的结构。解析的结果通常是一个呈现文档结构的节点树,一般称之为解析树或句法树。
例如,对表达式“2+3-1” 的解析会得到以下树结构
解析语法规则
解析过程是基于文档内容所遵从的语法规则的,也就是以某种语言或格式写成的内容。
解析可以被分解为两个子过程-词法分析(lexical)与句法(syntax)分析。
词法分析过程就是将数据拆分成一些标记,即所使用的语言词汇。举例来说,人类语言就是由字典中的词汇所构成的。
句法分析则是语言语法规则的应用。具体解析过程如下图
解析是一个可迭代的过程,解析器通常会先从词法器获取一个新的标记然后使用语法规则之一匹配对应的标记,如果该语法规则匹配成功,就会生成一个与标记对应 的节点,节点添加到解析树后解析器再重新获取另一个标记。
通常情况下解析树并不是最后的所得结果,解析只是用来将开发者输入的文档转化为另一种格式,典型的如程序的编译过程。编译器将源代码编译成机器码,第一步就是就是构造解析树然后将其转化为机器码文档,如下图所示:
解析示例
我先来创建一个简单的数值语言,然后看一下是怎么进行解析的
词汇:我们的语言单位包括整型,加号和减号,
语法规则:1、使用表达式(expression)、 术语(term)和操作符(operation)表示语句
2、我们的语句可以含有任意多个表达式
3、一
解析与DOM树构建之解析规则
最新推荐文章于 2025-06-05 10:39:09 发布