起首定义token的构造:
- export interface IToken {
- start: number; // 肇端地位
- end: number; // 停止地位
- value: string; // token
- type: TokenKind; // 类型
- }
Token类型一共有以下几种:
- export interface IAttribute extends IBaseNode {
- name: IText; // 名称
- value: IAttributeValue | void; // 值
- }
- export enum TokenKind {
- Literal = 'Literal', // 文本
- OpenTag = 'OpenTag', // 标签名称
- OpenTagEnd = 'OpenTagEnd', // 开端标签停止符, 可能是 '/', 或者 '', '--'
- CloseTag = 'CloseTag', // 封闭标签
- Whitespace = 'Whitespace', // 开端标签类属性值之间的空白
- AttrValueEq = 'AttrValueEq', // 属性中的=
- AttrValueNq = 'AttrValueNq', // 属性中没有引号的值
- AttrValueSq = 'AttrValueSq', // 被单引号包起来的属性值
- AttrValueDq = 'AttrValueDq', // 被双引号包起来的属性值
- }
特别的自力段片段, 然后交给上层的 parser 去分析键值关系. 这么做的原因是为了在token分析
- enum State {
- Literal = 'Literal',
- BeforeOpenTag = 'BeforeOpenTag',
- OpeningTag = 'OpeningTag',
- AfterOpenTag = 'AfterOpenTag',
- InValueNq = 'InValueNq',
- InValueSq = 'InValueSq',
- InValueDq = 'InValueDq',
- ClosingOpenTag = 'ClosingOpenTag',
- OpeningSpecial = 'OpeningSpecial',
- OpeningDoctype =
推荐阅读
【51CTO晃荡】8.26 带你与清华大年夜学、搜狗、京东大年夜咖们一路商量基于算法的IT运维实践 对于体系治理员来说,云职业之路要大年夜转移到云运算,做一名cloudop开端。这是云运算中的一>>>详细阅读
本文标题:AST解析基础: 如何写一个简单的html语法分析库
地址:http://www.17bianji.com/lsqh/36839.html
1/2 1

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