作家
登录

AST解析基础: 如何写一个简单的html语法分析库

作者: 来源: 2017-08-22 09:25:22 阅读 我要评论

起首定义token的构造:

  1. export interface IToken { 
  2.   start: number;    // 肇端地位 
  3.   end: number;      // 停止地位 
  4.   value: string;    // token 
  5.   type: TokenKind;  // 类型 

Token类型一共有以下几种:

  1. export interface IAttribute extends IBaseNode { 
  2.   name: IText;  // 名称 
  3.   value: IAttributeValue | void; // 值 
  1. export enum TokenKind { 
  2.   Literal     = 'Literal',      // 文本 
  3.   OpenTag     = 'OpenTag',      // 标签名称 
  4.   OpenTagEnd  = 'OpenTagEnd',   // 开端标签停止符, 可能是 '/', 或者 '''--' 
  5.   CloseTag    = 'CloseTag',     // 封闭标签 
  6.   Whitespace  = 'Whitespace',   // 开端标签类属性值之间的空白 
  7.   AttrValueEq = 'AttrValueEq',  // 属性中的= 
  8.   AttrValueNq = 'AttrValueNq',  // 属性中没有引号的值 
  9.   AttrValueSq = 'AttrValueSq',  // 被单引号包起来的属性值 
  10.   AttrValueDq = 'AttrValueDq',  // 被双引号包起来的属性值 

特别的自力段片段, 然后交给上层的 parser 去分析键值关系. 这么做的原因是为了在token分析

  1. enum State { 
  2.   Literal              = 'Literal'
  3.   BeforeOpenTag        = 'BeforeOpenTag'
  4.   OpeningTag           = 'OpeningTag'
  5.   AfterOpenTag         = 'AfterOpenTag'
  6.   InValueNq            = 'InValueNq'
  7.   InValueSq            = 'InValueSq'
  8.   InValueDq            = 'InValueDq'
  9.   ClosingOpenTag       = 'ClosingOpenTag'
  10.   OpeningSpecial       = 'OpeningSpecial'
  11.   OpeningDoctype       = 

      推荐阅读

      传统IT七大职业的云计算转型之路

    【51CTO晃荡】8.26 带你与清华大年夜学、搜狗、京东大年夜咖们一路商量基于算法的IT运维实践 对于体系治理员来说,云职业之路要大年夜转移到云运算,做一名cloudop开端。这是云运算中的一>>>详细阅读


    本文标题:AST解析基础: 如何写一个简单的html语法分析库

    地址:http://www.17bianji.com/lsqh/36839.html

关键词: 探索发现

乐购科技部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与乐购科技进行文章共享合作。

网友点评
自媒体专栏

评论

热度

精彩导读
栏目ID=71的表不存在(操作类型=0)