1. 词 token
专业不是计算机的博主比较尴尬,一直以为token就是验证身份用的标识
token —— 表示 “最小有意义的单元”
以这个简单的p标签为例,我们分析哪些是token:
<p class="a">text text text</p>
按最小有意义单元的定义来看,第一个词(token)是什么呢?显然,作为一个词(token),整个 p 标签肯定是过大了(它甚至可以嵌套)。
正确来说,应该拆分成这样:
2. 词法解析 —— 获取token
浏览器的词法是怎么解析的呢?
众所周知,浏览器获取的是一个一个的字节。
因此,浏览器每获得一个字符就会走一次分析逻辑,直到获取一个完整的token
最常见的实现就是 状态机 (简单来说就是每获取一个字符,就根据上一次状态和输入的字符,来转换一次状态,直到获得一个token)
3. 语法解析 —— 用toke来构建DOM树(实际是一个栈)
其实构建DOM树也是一个状态机,需要根据上一次状态和输入的token来获取新的栈的状态
以一个简单的HTML为例:
<html maaa=a > <head> <title>cool</title> </head> <body> <img src="a" /> </body> </html>
原文:https://www.cnblogs.com/amiezhang/p/10409661.html