kedebug @kedebug 2014-07-19 14:43

「LispEx」让 Lisp 支持并发编程

LispEx 是用 Go 语言编写的一款符合 R5RS 标准的 Lisp 解释器。 有意思的地方是,在设计之初我就考虑是否能为其添加一些并发编程的语言特性,让这门古老的编程语言充满生机起来。 于是便选择了 Go 语言来实现它,耗时近 2 个月,Go 里面的一些特性如:goroutine, channel, select 等语义都在 LispEx 中有了支持。 - 遵守 KISS 原则,尽量把代码设计的简单,易懂。很多模块被很好的分离出来,想添加新的语义支持的话,只需要添加、修改个别文件的源代码。 - 借鉴了王垠大神 Yin 语言的代码设计思路:任何一个 Node 都会被解释成 Value;Parser 被拆分成了 2 个阶段:包括预处理生成语法单元,然后 Parse 成语法树。顺着这个思路,代码会变得非常易读,当然在设计的时候针对这点是费了很多心思的,希望对一些后人能有借鉴意义。 - 并发的词法分析器。这点 Rob Pike 在 http://cuddle.googlecode.com/hg/talk/lex.html#title-slide 提到过。LispEx 把它实践了一遍。 - Go liked 并发语义支持。大家可以到 https://github.com/kedebug/LispEx 看看具体的例子。 之前开源了 2 个项目: https://github.com/kedebug/yodb https://github.com/kedebug/yohub 不少同学通过邮件反馈表示从中有所收获,这让我也更加充满热情地写代码开源出来,欢迎大家共同学习,指正。 ======================= 2014/07/21更新 LispEx 已被 Go 语言官方 wiki 收录: https://code.google.com/p/go-wiki/wiki/Projects#Virtual_Machines_and_Languages

0
0
0
暂无评论,快来抢沙发~