最新公告
  • 欢迎您光临起源地模板网,本站秉承服务宗旨 履行“站长”责任,销售只是起点 服务永无止境!立即加入钻石VIP
  • 用JavaScript实现一门编程语言 3-2 (解析器之InputStream)

    正文概述 掘金(众成翻译)   2021-01-09   491

    译者: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) 来得到一个流对象


    起源地下载网 » 用JavaScript实现一门编程语言 3-2 (解析器之InputStream)

    常见问题FAQ

    免费下载或者VIP会员专享资源能否直接商用?
    本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
    提示下载完但解压或打开不了?
    最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用百度网盘软件或迅雷下载。若排除这种情况,可在对应资源底部留言,或 联络我们.。
    找不到素材资源介绍文章里的示例图片?
    对于PPT,KEY,Mockups,APP,网页模版等类型的素材,文章内用于介绍的图片通常并不包含在对应可供下载素材包内。这些相关商业图片需另外购买,且本站不负责(也没有办法)找到出处。 同样地一些字体文件也是这种情况,但部分素材会在素材包内有一份字体下载链接清单。
    模板不会安装或需要功能定制以及二次开发?
    请QQ联系我们

    发表评论

    还没有评论,快来抢沙发吧!

    如需帝国cms功能定制以及二次开发请联系我们

    联系作者

    请选择支付方式

    ×
    迅虎支付宝
    迅虎微信
    支付宝当面付
    余额支付
    ×
    微信扫码支付 0 元