用 C 写了一个 Racket 解释器,一个很小的功能子集

2019-09-15 22:29:26 +08:00
 haozhang

常用的 form 都实现了,递归,闭包什么的,链接如下 https://github.com/Summerlve/Little-Racket

5452 次点击
所在节点    C
31 条回复
Rorshach
2019-09-15 22:35:02 +08:00
挺好的,先 star 以后学习
haozhang
2019-09-15 22:38:23 +08:00
我就看了一下 js 写的 the super tiny compiler,大致了解了 lexer,parser,就开干了= =,对于 eval 部分,完全靠自己想法子,没参考什么书,写的估计奇葩无比......
haozhang
2019-09-15 22:38:40 +08:00
favourstreet
2019-09-15 23:18:23 +08:00
这么多行……楼主的#include 还带上了"./"看着着实可爱,是什么编辑器或者 IDE 给添上的?
haozhang
2019-09-16 00:39:47 +08:00
@favourstreet 带./有什么问题吗....表示下当前路径啊,我向来能省的一定写上去,看着多省力
Mohanson
2019-09-16 04:36:07 +08:00
同分享下用 ts(typescript) 写的 ts 编译器: https://github.com/cryptape/minits
rus4db
2019-09-16 08:38:27 +08:00
诶嘿,我也在玩这个,欢迎切磋
https://github.com/mikukonai/AuroraScheme
haozhang
2019-09-16 08:47:49 +08:00
@mikukonai 66666
haozhang
2019-09-16 08:52:06 +08:00
@mikukonai 我是直接 c runtime 里面去计算 racket 代码,我看了下你那个比我的高级多了
missdeer
2019-09-16 09:17:39 +08:00
@haozhang 杠一下,不带 “./”不是更省力吗
guxingke
2019-09-16 09:54:59 +08:00
推荐一个项目, build your own lisp interpreter

https://github.com/kanaka/mal

大部分语言的实现都有了
haozhang
2019-09-16 11:49:51 +08:00
@missdeer 写着省力了,看着费劲了,你还得脑子拐道弯才意识到这不是标准库头文件
haozhang
2019-09-16 11:51:22 +08:00
@guxingke 这不中,这项目明显用 racket 去实现 racket,而我这个是 c 实现 racket
guxingke
2019-09-16 15:06:23 +08:00
@haozhang 你这可没看仔细。。。 mal 可以自举 建议重新看一下
haozhang
2019-09-16 16:59:52 +08:00
@guxingke 那么问题来了这个 racket 是用什么语言实现的,我没找到 c 代码啊?
guxingke
2019-09-16 17:38:08 +08:00
no1xsyzy
2019-09-16 19:36:38 +08:00
@haozhang #12 其实 C 语言习惯上来说 "" 就是非标准,<> 就是标准的和外部的……
或者说 "" 优先当前目录找,<> 优先 lib 里面找,不清楚是标准还是实现,不是专精 C
haozhang
2019-09-16 21:12:06 +08:00
@guxingke 这个不是用不同的语言去实现 lisp,这和我将 c 实现 racket 有哪门子关系啊。。。。
haozhang
2019-09-16 21:13:12 +08:00
@guxingke 这个自举就看不懂了,我都没看出来他哪里自举了= =
haozhang
2019-09-16 21:15:13 +08:00
@no1xsyzy 所以我加./更清晰....有啥子问题吗,你这个描述不还是来绕个弯子,我看见./就是我的代码不清楚?

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

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

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

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

© 2021 V2EX