lang
用c实现了一个语言的解释器,包括词法分析、语法分析、解释执行。
https://github.com/nighca/lang
目前没有依赖第三方库。
特点包括
-
动态类型
-
函数式
-
支持闭包
-
垃圾回收(还没完成)
语法参考了Lisp,如
(\
($ a 1)
($
adda
(lamda
i
(+ i a)
)
)
($
minusa
(lamda
i
(- i a)
)
)
($ a 2)
($
b
(adda 3)
)
($ a 1)
(minusa b)
)
翻译成js就是:
function(){
var a = 1;
var adda = function(i){
return i + a;
}
var minusa = function(i){
return i - a;
}
a = 2;
var b = adda(3);
a = 1;
return minusa(b);
}