Squirrel是一种较新的 程序设计语言,它从著名的LUA语言继承了很多特性,适用的范围也与LUA语言相似。
Squirrel的作者是意大利人Alberto Demichelis,SQUIRREL开发的本意是用于替代LUA,LUA的很多语法与C/C++ 不一致,C/C++程序员写脚本时,容易犯错误,而SQUIRREL语法与C/C++很相似,因此Squirrel更适合C/C++ 程序员。
Squirrel是一种 动态语言,它有一个 编译器和 虚拟机,代码会被 动态编译成 字节码,然后在虚拟机上执行。当然,这种编译比C/C++或者Java的编译要简单很多,它的 虚拟机也不会有JVM这样“底层”,Squirrel的虚拟机更像是一个“函数执行队列”,这个虚拟机是建立在标准libc基础上的(也就是说标准C函数在这个虚拟机中是元操作,而JVM是建立在汇编语言基础上的)。
Squirrel在设计上就是要做到嵌入C/C++程序,因此,Squirrel 虚拟机可以与C/C++工作在一个进程/线程当中,通过虚拟机的接口,C/C++的数据可以被嵌入的Squirrel代码访问,反之Squirrel的代码和数据也可以被C/C++完全控制。
从语言结构上看,Squirrel与Lua一脉相承,Squirrel与Lua的基础都是 广义表(或者说是一颗多叉树),Hash算法在这个广义表中起到一个关键的作用。
Squirrel代码和数据都是组织在一个 广义表当中的。数据、函数、类(Lua不支持OO,Squirrel支持有限的OO)都是 广义表的一个值,值都是采用<名称,值>的方式存储的,通过对名称的Hash,可以很方便的找到值。
Squirrel比Lua更好的支持OO,Squirrel可以定义类,允许类继承,能够自动执行构造(constructor函数),而Lua只能通过Table来模拟类。更关键的一点,Squirrel允许类产生实例(instance),每个实例拥有自己的 存储空间,在这点上,比Lua的模拟类明显好用。
Squirrel支持在每个实例上设置一个Userpoint,这个特性非常有利与与C++Object的接口,一个Squirrel类可以的作为一个C++ class的影子运行,我们只需要在Squirrel上实现C++class的接口,通过Squirrel的Userpoint,即可操控这个C++ Object。
值得关注的是Squirrel的执行速度,执行一个10000元素的 数组创建及遍历,其速度大约是C++的1/4,比Lua快20%。
Squirrel的保留字与C++几乎一致,但Squirrel没有指针,内存由 虚拟机管理,不需要手工申请和释放,所以没有new和delete关键字。Squirrel是弱类型的,所以也就没有char、float、int、double等关键字,值得注意到是Squirrel不支持double(Squirrel 3.0支持使用double代替float),其浮点数内部是float,这可能与Squirrel主要为游戏设计有关。
Squirrel新增了一些关键字,主要有local、typeof、instanceof、resum、yield、delegate、parent等(其中delegate、 parent关键字在Squirrel3.0Alpha版中似乎有变化),resum、yield用于Squirrel的“协程”,可以理解为非抢先式的内部线程(Squirrel虚拟机是 单线程的,一个虚拟机内部不支持系统的线程,这和Lua很相似)。
值得注意的是local 关键字,Squirrel中的 变量是需要定义的,和C++一样,你可以在程序的任何地方定义,但定义的时候必须使用local关键字。使用local表明 变量在 堆栈里创建,离开函数才会自动销毁。
Squirrel循环 控制语句增加了foreach循环,而且这个foreach不像Lua一样需要什么“闭包”,可以很简单的使用,例如foreach(local i in arrayVar){},这完成对一个 数组的遍历,foreach(local key,value in tableVar){}, 这完成对一个表达遍历。

SQUIRREL语言相关推荐

  1. squirrel语言探索

    由于工作原因,需要对squirrel语言进行学习,通过互联网搜索,了解了squirrel该语言是一个意大利很年轻的小伙子用c写的,所以和c一起嵌入使用非常棒,而且是轻量化.嵌入式语言.很好的和C语言进 ...

  2. Squirrel语言的执行速度

    rel="File-List" href="file:///C:%5CDOCUME%7E1%5Cibm%5CLOCALS%7E1%5CTemp%5Cmsohtml1%5C ...

  3. squirrel 脚本_Squirrel便携式Shell和脚本语言

    1799年,一位法国陆军工程师做出了惊人的发现. 不,不是鹅肝,卡门培尔奶酪,巴氏杀菌法或萨特法,而是罗斯塔石,这是解密埃及大部分古代象形文字的关键(参见图1). 图1. Rosetta石头,一种11 ...

  4. 成功的在项目中使用Squirrel

    2009年事情太多,一直在折腾房子,终于赶在房价高涨之前弄到了自己中意的房子,接着是装修,搬家,孩子上幼儿园,几乎没有时间写点自己的感悟. 我一直在研究Squirrel语言,在国内应该算先行者了,但是 ...

  5. 老调重弹,Squirrel,FASTCGI

    最近试图将Squirrel语言用于Web,尝试了好长时间,终于成功的使用FCGI,将将Squirrel脚本作为了Web的服务器端. 我以前使用Shttpd,后来借鉴了一部分Shttpd代码,自己写了一 ...

  6. 求生之路2服务器正在执行此文件脚本,求生之路2 脚本(VScripts)

    求生之路2 脚本 是可以在游戏中的虚拟机里被运行的服务器端的脚本.它们使用Squirrel语言编写, 这是一种类似于Lua的脚本编译语言. 本页面内容由Dazai Nerau译自英文版页面. 欢迎任何 ...

  7. Squirrel脚本语言..游戏开发.

    Squirrel是一种较新的程序设计语言,它从著名的LUA语言继承了很多特性,适用的范围也与LUA语言相似. Squirrel是个人的作品,作者是意大利小伙AlbertoDemichelis,SQUI ...

  8. linux sql server客户端,Linux的MS SQL Server客户端SQuirrel SQL Client

    因为工作需要,要在ubuntu下连接mssql数据库,找了很久终于找到了SQuirreL SQL Client. SQuirreL SQL Client最大的魅力在于: 基于Java,具备良好的夸平台 ...

  9. 脚本没有类似C语言的预编译,开源脚本库

    开源脚本库 1 TinyC(TCC) 1.1 优点 1.1.1 速度快:直接x86汇编代码 1.1.2 标准C支持:支持标准的 ANSI C 语言,而且也支持 ISO C99 标准 1.2 缺点 1. ...

最新文章

  1. 如何使用 OpenCV Python 检测颜色
  2. DTS增量/同步支持DDL迁移的说明
  3. HTML DOM全解和案例
  4. linux下的动态链接库和静态链接库到底是个什么鬼?(一)静态链接库的编译与使用...
  5. 笔记-信息化与系统集成技术-国家信息化体系-六要素
  6. 源码免杀-过启发式的思路
  7. 网页中插入javascript的几种方法
  8. equalsignorecase用法
  9. 滑动切换activity
  10. EXcel 2016添加下拉列表,并且配置不同颜色,图文并茂手把手指导
  11. iOS App之间的通信方式
  12. 数学建模学习笔记之相关系数
  13. linux ibm多路径软件,如何安装配置IBM存储多路径软件
  14. datetime处理日期时间
  15. Postman的下载及安装
  16. 【三石jQuery视频教程】01.图片循环展示_重发
  17. 实时日志/数据库采集处理,实时用户行为属性个人总结
  18. vimdiff 命令使用技巧
  19. 苹果MacPro基本操作指南(持续更新)(2022.6.20版)
  20. Python 使用 Web3.py 进行 ETH 和代币转账

热门文章

  1. OCT-模拟集成电路设计的九个境界
  2. 使用URL Rewrite实现网站伪静态
  3. 如何通过浏览器访问本地电脑文件
  4. JSON.stringify 函数 (JavaScript)
  5. 芯力特SIT1145AQT带选择性唤醒及故障保护的低功耗 CAN FD 总线收发器,完全替代TJA1145T。
  6. 转载:优启通添加软件方法(一些 EXLOAD 简单的应用例子 )
  7. 获取CheckedListBox选中的项
  8. java常见编程练习hw二(中等难度)
  9. linux串口读取mpu9250数据,模拟 I2C 读取 MPU9250 数据的测试笔记
  10. Cadence Orcad Capture新建原理图Symbol及新建和添加元件库到工程的方法图文教程及视频演示