轉自我的cnblogs
最近在搜索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的那種無限制使用的license
2. 動態類型
3. Delegation代理支持
4. 支持類,及繼承
5. 高階函數功能
6. Generator
7. 纖程(Coroutines)
8. 尾遞歸(tail recursion)
9. 異常捕獲
10. 引用計數方式的垃圾回收(有點過時)
11. 弱引用
12. 6k行編譯器及虛擬機代碼
13. 可選的16位字符串
14. 支持64位cpu
總體觀感,這種腳本語言語法結構類似C++及lua的雜合體,很多地方像lua。OO部分又像Python
這里是一個完整文檔說明,可以詳細了解其vm接口及api調用。
不過到目前為主,未看到有成熟的商業項目使用