用 js 写了个 js 解释器

2020-04-28 16:28:58 +08:00
 zuiluo

前文 https://www.v2ex.com/t/652219

一个解释器的小玩具,经过我一个多月业余时间的开发,现在终于支持大部分 JS 的核心功能了,除了对象。

现在已经图灵完备,基本上可以算的上一个阉割版 js 了

举个例子:解释执行一个快排函数:)


function quickSort(list,len) {
    let a = 0;
    let b = len-1;
    let c = list[a];
    while (a < b){
        while (list[b]>c && a < b){
            b = b-1;
        }
        if(list[b] < c){
            list[a] = list[b];
            list[b] = c;
            b = b-1;
            c = list[b];
        }
         while (list[a] < c && a < b){
            a = a + 1;
         }
        if(list[a] > c){
            list[b] = list[a];
            list[a] = c;
            a = a + 1;
            c = list[a];
        }
    }
    return list;
}

let arr = [9,3,2,1,5,-2,6];
quickSort(arr,7);
log(arr,666);

https://github.com/zuluoaaa/makeJs

最终跑通的那一刻,感觉整个人都嗨翻了

5871 次点击
所在节点    分享创造
29 条回复
zhw2590582
2020-04-29 10:07:28 +08:00
所以可以用在小程序热更新吗
zuiluo
2020-04-29 10:39:16 +08:00
@zhw2590582 能运行 JS 的环境都能运行这个解释器,至于能不能热更新,就没了解过了。楼上有人有对应的帖子介绍,你可以看看
damingxing
2020-04-30 14:38:07 +08:00
大佬厉害啊
charten
2020-05-01 23:17:24 +08:00
php 解释器我觉得市场更大一点(滑稽
PALELESS
2020-05-02 11:23:38 +08:00
一直想写个解释器练练手,star 了
rodjl
2020-05-02 12:46:06 +08:00
看过 engine262 的源码,看的头大
LifStge
2020-05-02 13:44:58 +08:00
禁止套娃
chizuo
2020-05-02 20:24:13 +08:00
@zdnyp
@xuarongla0000
非科班的你们可能无法理解学习了编译原理,写个玩具编译器 /解释器有多爽
1847bell
2020-05-14 16:28:48 +08:00
没点开看,就凭这个标题我都觉得你很秀

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/666980

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX