支持OO的Squirrel脚本语言
最近在搜索AngleScript bug时,突然发现一个新的轻量级OO脚本语言Squirrel 翻译过来就是松鼠的意思
来看下这个脚本的样子:
local table = { a = "10" subtable = { array = [1,2,3] }, [10 + 123] = "expression index" } local array=[ 1, 2, 3, { a = 10, b = "string" } ]; foreach(i,val in array) { ::print("the type of val is"+typeof val); }
class Entity { constructor(etype,entityname) { name = entityname; type = etype; } x = 0; y = 0; z = 0; name = null; type = null; } function Entity::MoveTo(newx,newy,newz) { x = newx; y = newy; z = newz; } class Player extends Entity { constructor(entityname) { Entity.constructor("Player",entityname) } function DoDomething() { ::print("something"); } } local newplayer = Player("da playar"); newplayer.MoveTo(100,200,300);
特性:1. 开源,zlib的那种无限制使用的license2. 动态类型3. Delegation代理支持4. 支持类,及继承5. 高阶函数功能6. Generator7. 纤程(Coroutines)8. 尾递归(tail recursion)9. 异常捕获10. 引用计数方式的垃圾回收(有点过时)11. 弱引用12. 6k行编译器及虚拟机代码13. 可选的16位字符串14. 支持64位cpu
总体观感,这种脚本语言语法结构类似C++及lua的杂合体,很多地方像lua。OO部分又像Python
这里是一个完整文档说明,可以详细了解其vm接口及api调用。
不过到目前为主,未看到有成熟的商业项目使用
浙公网安备 33010602011771号