`
RednaxelaFX
  • 浏览: 3053110 次
  • 性别: Icon_minigender_1
  • 来自: 海外
社区版块
存档分类
最新评论

编译crowbar 0.4.02

    博客分类:
  • misc
阅读更多
刚才读资料的时候又看到了crowbar的链接,突然有这兴致去把它编译出来玩玩。

但是直接把源码包下载下来却没办法直接编译。我用的是对应GCC 3.4.5的MinGW和某个老版本的msys。按照一般程序,先configure,然后make...出错了。

看了下,发觉有些依赖项在这台机上没装。包括flex,、bison、regex和Oniguruma。
从SourceForge:MSYS Supplementary Tools下载bison、flex和regex。
Oniguruma把鬼車下载下来。

先把Oniguruma编译出来。一样,make然后make install,完全没问题。

再回到crowbar去make,还是出错,说找不到-lonig。这就怪了,刚装上Oniguruma不是么。打开makefile,加上LIBS = /usr/local/lib然后给后面几个需要链接libonig.a的地方加上$(LIBS)。

再make,还是出错 - -
发觉那个组装出来的builtin.c有点问题。本来builtin.c的末尾应该附加上./builtin/tail.txt的内容,但实际上却没有。不管了,手动给加上去吧。
继续出错。说找不到st_src_array。仔细看了下,把builtin.c里crb_compile_built_in_script里的for循环去掉,直接调用CRB_compile_string(inter, st_builtin_src);

再make,终于OK了。

-------------------------------------------------------------------------------

这crowbar还是挺有趣的。基本上就是个小型的JavaScript,一些重要的特性都实现了,例如作用域链(scope chain)、基于对象(object-based,但还不算基于原型的面向对象(prototype-based OO))等。

-------------------------------------------------------------------------------

把编译结果放在附件里。说不定以后还会再拿来玩玩,懒得次次都重新编译 ^ ^

function __foo(i) {
    this = new_object();
    this.i = i;
    this.goo = closure() {
        print("i = " + i + "\n");
    };
    return this;
}

a = __foo(3);
a.goo(); // "i = 3"
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics