译者:miaoYu
原文链接
字符输入流
在这个部分,我们将创建一个“流对象”来提供从字符串读取字符的能力。“流对象”包含四个方法:
-
peek()
— 返回下一个值,但不会从流中移除。 -
next()
— 返回下一个值,并且从流中移除。 -
eof()
— 如果流里面没有值了,返回true
。 -
croak(msg)
— 处理throw new Error(msg)
.
这让我们能跟踪当前位置(比如哪一行代码,第几列),对展示错误信息非常有用。
根据你的需要,还可以再加一些方法,但目前来看已经足够了。
字符输入流处理字符,所以next()
/ peek()
方法会返回chars(因为JavaScript没有char类型,所以以字符串的形式展示)。
以下是这个对象的全部代码,命名为“InputStream”。代码很少很容易理解:
function InputStream(input) {
var pos = 0, line = 1, col = 0;
return {
next : next,
peek : peek,
eof : eof,
croak : croak,
};
function next() {
var ch = input.charAt(pos++);
if (ch == ""\n"") line++, col = 0; else col++;
return ch;
}
function peek() {
return input.charAt(pos);
}
function eof() {
return peek() == """";
}
function croak(msg) {
throw new Error(msg + "" ("" + line + "":"" + col + "")"");
}
}
注意:它不是一个标准的对象(没有通过new
来创建)。用 var stream = InputStream(string)
来得到一个流对象
。
常见问题FAQ
- 免费下载或者VIP会员专享资源能否直接商用?
- 本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
- 提示下载完但解压或打开不了?
- 找不到素材资源介绍文章里的示例图片?
- 模板不会安装或需要功能定制以及二次开发?
发表评论
还没有评论,快来抢沙发吧!