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);
}