- export function parse(input: string): INode[] {
- init(input)
- while (index < count) {
- token = tokens[index]
- switch (token.type) {
- case TokenKind.Literal:
- if (!node) {
- node = createLiteral()
- pushNode(node)
- } else {
- appendLiteral(node)
- }
- break
- case TokenKind.OpenTag:
- node = void 0
- par搜刮引擎优化penTag()
- break
- case TokenKind.CloseTag:
- node = void 0
- parseCloseTag()
- break
- default:
- unexpected()
- break
- }
- index++
- }
- const _nodes = nodes
- init()
- return _nodes
- }
标签的属性是一个键值对, 包含名称 name 及值 value 部分, 定义构造如下:
个中名称是通俗的文本节点, 然则值比较特别, 表示在其可能被单/双引号包起来, 而引号是无意义的, 是以定义一个标签值构造:
Token解析
AST解析起首须要解析原始文本获得符号列表, 然后再经由过程高低文语境分析获得最终的语法树.
Token分析时并没有推敲属性的键/值关系, 均同一视为属性中的一个片段, 同时, 视 = 为一个
相对于JSON, html固然看起来简单, 然则高低文是必须的, 所以固然JSON可以直接经由过程token分析获得最终的结不雅, 然则html却不克不及, token分析是第一步, 这是必须的. (JSON解析可以参考我的另一篇文┞仿: 徒手写一个JSON解析器(Golang) ).
token解析时, 须要根据当前的状况来分析token的含义, 然后得出一个token列表.
推荐阅读
【51CTO晃荡】8.26 带你与清华大年夜学、搜狗、京东大年夜咖们一路商量基于算法的IT运维实践 对于体系治理员来说,云职业之路要大年夜转移到云运算,做一名cloudop开端。这是云运算中的一>>>详细阅读
本文标题:AST解析基础: 如何写一个简单的html语法分析库
地址:http://www.17bianji.com/lsqh/36839.html
1/2 1

网友点评
精彩导读
科技快报
品牌展示