参照那个《make yourselves a scheme in 48 hours》写的,不过显然大大超过了48 hours。没有中间代码生成,也没垃圾收集。有个简陋的闭包实现,有内存泄露...
示例代码,
var a=2;
case (a){
of (3){
puts('test');
}
of (2){
puts('right');
}
else{
puts('test');
}
}
if (1){;;;;}
var add = function(i) {
if (i<=0) {
return 1;
}
puts(i);
return i+add(i-1);
};
puts(add(9));
var arr=[1,2,3,4];
arr << 1 << 2;
puts(arr);
var hash={'a':1,'b':2};
hash['c']=hash['a']+hash['b'];
hash['c']=1;
puts(hash);
function makeAdder(num){
var this={
'count':num,
'add':function(num){
this['count']=this['count']+num;
}
};
return this;
}
var adder = makeAdder(2);
(adder['add'])(1);
(adder['add'])(1);
adder['add'](1);
adder['count'];
puts('************');
function makeCounter(init){
var this={
'n':init,
'add':function(n){
this['n']=this['n']+n;
return this['n'];
}
};
return this;
}
var counter=makeCounter(1);
puts((counter['add'])(2)); --3
puts(counter['add'](3)); --6
源码:
http://code.google.com/p/fineday/
回复 赵斌 2009年08月27日 星期四 21:36
有一个在线版http:
有中间代码生成,支持闭包,部分回收垃圾...
一起交流
回复 李亚橙 2009年08月28日 星期五 09:37
回复 王依依 2009年08月28日 星期五 16:24
用其他的吧
回复 李亚橙 2009年08月28日 星期五 16:40
回复 李亚橙 2009年08月28日 星期五 16:38
有什么
回复 王依依 2009年08月28日 星期五 16:39
回复 刘磊(V.L.) 2009年08月28日 星期五 10:56
回复 李亚橙 2009年08月28日 星期五 11:15
回复 李亚橙 2009年08月28日 星期五 11:10
如果说是parsec的文档,可以看这里 http:
参照着个文档和内附的示例可以很轻松地写出自己的parser
如果对haskell感兴趣可以看下《write yourself a scheme in 48 hours》http:
回复 刘磊(V.L.) 2009年08月28日 星期五 11:13