《TypeScript图形渲染实战:2D架构设计与实现》 —2.2.7 Doom3Tokenizer字符处理私有方法

举报
华章计算机 发表于 2019/12/11 12:29:07 2019/12/11
【摘要】 本节书摘来自华章计算机《TypeScript图形渲染实战:2D架构设计与实现》 一书中第2章,第2.2.7节,作者是步磊峰。

2.2.7  Doom3Tokenizer字符处理私有方法

  一旦通过setSource方法设置好要解析的源字符串或者调用reset方法进行重新解析字符串时,则需要一些操作来获取当前字符或探测下一个字符,可以使用这几个成员方法,代码如下:

 

//获得当前的索引指向的char,并且将索引加1,后移一位

//后++特点是返回当前的索引,并将索引加1

//这样的话,_getChar返回的是当前要处理的char,而索引指向的是下一个要处理的char

private _getChar ( ) : string {

    //数组越界检查

    if ( this._currIdx >= 0 && this . _currIdx < this . _source . length ) {

        return this . _source . charAt ( this . _currIdx ++ ) ;

    }

    return "" ;

}

 

//探测下一个字符是什么

//很微妙的后++操作

private _peekChar ( ): string {

    //数组越界检查,与_getChar的区别是并没移动当前索引

    if ( this . _currIdx >= 0 && this . _currIdx < this . _source.length ) {

       return this . _source . charAt ( this . _currIdx  ) ;

    }

    return "" ;

}

 

private _ungetChar ( ) : void {

    //将索引前移1位,前减操作符

    if ( this . _currIdx > 0 ) {

        -- this . _currIdx ;

    }     

}

 

  到此为止,我们构建了IDoom3Tokenizer词法解析器最小的运行环境,可以设置(setSource)或重置(reset)要解析的数据源,可以正向地获取(_getChar)当前字符,或探测(_peekChar)下一个字符,也可以反向归还(_ungetChar)一个字符,还可以知道当前字符是数字字符(_isDigit)或者是空白符(_isWhiteSpace)。下一节将进入Token解析阶段。


【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。