IT博客汇
  • 首页
  • 精华
  • 技术
  • 设计
  • 资讯
  • 扯淡
  • 权利声明
  • 登录 注册

    A mini Scheme interpreter written in Go

    Yukang (moorekang@gmail.com)发表于 2014-06-28 00:00:00
    love 0
    figure: hare

    Scheme-Brained Hare

    在我学Go的时候开始了一个自己的业余小项目,就是这个GoScheme,打算用Go来写一个Scheme解释器,因为重写轮子是学习新东西的好手段。 现在基本完成了,当然只是一些基本的语法支持,没有宏。

    我只是用这个项目来熟悉Go的语法,Go来做这种项目没有特别大的优势,这个项目用C来实现代码量会更少一些。比如这里个里面的基本数据对象包括各种类型,boolean, symbol, fixnum, proc等等,又都是一个Object类型。如果是C可以用union类型来表示,然后通过Object*实现接口上的统一操作各种数据,类似的代码像这样子:

    typedef struct object {
        object_type type;
        union {
            struct {
                char value;
            } boolean;
            struct {
                char *value;
            } symbol;
            struct {
                struct object *car;
                struct object *cdr;
            } pair;
    		// ..........
        } data;
    } object;

    Go里面没有Union这种类型,所以我用了reflect来实现这些东西,看起来还不是那么简洁。Go的自带的一些toolset还可以,比如testing,format,coverage等,可以减少一些琐碎的事。

    另外,以后项目里配一下travis-CI可以做集成测试。

    Go更适合做一些需要并发的任务,比如服务端的事情。



沪ICP备19023445号-2号
友情链接