《TypeScript图形渲染实战:2D架构设计与实现》 —2.2.7 Doom3Tokenizer字符处理私有方法
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解析阶段。
- 点赞
- 收藏
- 关注作者
评论(0)