编译crowbar 0.4.02

刚才读资料的时候又看到了[url=http://kmaebashi.com/programmer/devlang/crowbar_0_4_02.html]crowbar[/url]的链接,突然有这兴致去把它编译出来玩玩。

但是直接把[url=http://kmaebashi.com/programmer/devlang/crowbar_0_4_02_win.LZH]源码包[/url]下载下来却没办法直接编译。我用的是对应GCC 3.4.5的MinGW和某个老版本的msys。按照一般程序,先configure,然后make...出错了。

看了下,发觉有些依赖项在这台机上没装。包括flex,、bison、regex和Oniguruma。
从SourceForge:[url=http://sourceforge.net/project/showfiles.php?group_id=2435&package_id=67879]MSYS Supplementary Tools[/url]下载bison、flex和regex。
从[url=http://www.geocities.jp/kosako3/oniguruma/]Oniguruma[/url]把鬼車下载下来。

先把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"
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值