前文 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
最终跑通的那一刻,感觉整个人都嗨翻了
![]() | 1 lzuntalented 2020-04-28 17:38:01 +08:00 手动点赞 |
2 MonoLogueChi 2020-04-28 18:00:17 +08:00 via Android 想起了以前有人在微信小程序里搞热更 |
![]() | 3 opengps 2020-04-28 18:01:55 +08:00 听名字就觉得秀 |
![]() | 5 zdnyp 2020-04-28 18:08:12 +08:00 这...有啥用么,是跟在线执行 js 一类吗? |
![]() | 6 xuarongla0000 2020-04-28 18:13:03 +08:00 没懂,这个有什么用 |
7 zuiluo OP @xuarongla0000 有意思+成就感+学习新姿势 |
![]() | 10 i0error 2020-04-28 18:21:07 +08:00 嗯 我这两天刚好注意了下小程序热更,是想回复二楼的,并非 ky |
![]() | 11 alphatoad 2020-04-28 18:22:18 +08:00 via iPhone 我最近也在做类似的东西,哈哈 Parser 和 interpreter 挺难写的 |
12 xiaojie668329 2020-04-28 18:36:21 +08:00 via iPhone 加油,要是通过 test262 的测试就牛逼了。 |
13 mayx 2020-04-28 18:37:36 +08:00 via Android 要不直接搞个 jslinux 上装个 v8 ? |
14 jtwor 2020-04-28 19:05:15 +08:00 已 star 勾起了对解释器的好奇 看了一下好像还没写处理对象 有没有用不重要 程序跑通的成就感自己才知道 :) |
16 mxT52CRuqR6o5 2020-04-28 21:56:01 +08:00 via Android @xuarongla0000 脸书的 prepack 项目 |
![]() | 17 m0cha 2020-04-28 22:04:29 +08:00 via iPhone star 勾起,进入我的吃灰收藏,下一个 |
![]() | 18 yianing 2020-04-28 23:33:15 +08:00 语法分析用的递归下降,我都已经忘了 LL, LR 那些东西了 |
19 yingzir 2020-04-28 23:49:51 +08:00 很不错, 可以把这个解释器写个教程,或者总结,应该会对自己,对其他人都非常有好处 |
![]() | 21 zhw2590582 2020-04-29 10:07:28 +08:00 所以可以用在小程序热更新吗 |
22 zuiluo OP @zhw2590582 能运行 JS 的环境都能运行这个解释器,至于能不能热更新,就没了解过了。楼上有人有对应的帖子介绍,你可以看看 |
23 damingxing 2020-04-30 14:38:07 +08:00 大佬厉害啊 |
![]() | 24 charten 2020-05-01 23:17:24 +08:00 php 解释器我觉得市场更大一点(滑稽 |
![]() | 25 PALELESS 2020-05-02 11:23:38 +08:00 一直想写个解释器练练手,star 了 |
26 rodjl 2020-05-02 12:46:06 +08:00 via iPhone 看过 engine262 的源码,看的头大 |
![]() | 27 LifStge 2020-05-02 13:44:58 +08:00 禁止套娃 |
![]() | 28 chizuo 2020-05-02 20:24:13 +08:00 |
29 1847bell 2020-05-14 16:28:48 +08:00 没点开看,就凭这个标题我都觉得你很秀 |