html解析采用边接收字节边切token的流式处理方式;tokenizer通过预定义的20+状态有限状态机(如datastate、tagopenstate)将字节流转为token,严格依赖字符触发状态跳转。

HTML 解析不是“读完再处理”,而是边收字节边切 Token;Tokenizer 和 TreeConstructor 是两个严格串行、状态驱动的模块,错一个状态机跳转会直接导致标签误判或 DOM 插入错位。
Tokenizer 怎么把字节流变成 Token?靠状态机,不是正则
浏览器拿到 HTTP 响应后,Tokenizer 立即启动——它不等完整 HTML 下载完,而是按字节流喂入一个预定义的有限状态机(FSM)。这个 FSM 在 HTML5 规范里有 20+ 个状态(比如 DataState、TagOpenState、AttributeNameState),每个状态只响应特定字符并决定下一步走向。
- 遇到
就切到 <code>TagOpenState,接着识别是<div> 还是 <code>











