GScript 脚本解释器再次更新完成,并散200分

zhouzhipen 2012-04-05 09:40:07
加精
之前有空的时候搞了一套脚本,命名为GScript,原意是想在游戏中使用的简单脚本(Game script),但在实现的过程中觉得既然做了,还不如实现一套强大一点的动态语言,于是乎GScript吸收了C、C++、JavaScript三种语言的优点,同时增加了一些新的特性,一门自己认为还算强大的语言诞生了。些时脚本的目的也不仅限于游戏脚本,完全可与Lua一样嵌入宿主程序中,为应用程序提供灵活的,可扩展性。
这几天趁放假,把之前做的一个GScript解释器做了一次全面的Bug清查,修复了一些重要Bug。并写了几个Demo。
发此贴的目的仅仅是为了满足一下小小的虚荣心,并与大家分享一下成果,任何人都可以把解释器嵌入自己的应用程序中。

GScript详细介绍

详细介绍和源码下载

Demo截图:
CSDN无名游戏


喷射粒子


雪花粒子
...全文
3483 131 打赏 收藏 转发到动态 举报
写回复
用AI写文章
131 条回复
切换为时间正序
请发表友善的回复…
发表回复
jaffy 2012-09-20
  • 打赏
  • 举报
回复
我也做过类似的应用,主要用在动态测试上。也属于脚本引擎开发。
bcrun 2012-04-24
  • 打赏
  • 举报
回复
[Quote=引用 116 楼 的回复:]
这个必须得顶,以前看到过一个人写了个解释器装到计算机上后,能够把c语言当java script嵌到网页里使用。
[/Quote]

竟然有这种工具,请问叫什么名字,我来搜索出来玩一下:)
cadinfo 2012-04-16
  • 打赏
  • 举报
回复
等待你的进一步的消息,如果开源很有兴趣参与,脚本有很好的作用
jc5566 2012-04-13
  • 打赏
  • 举报
回复
牛叉人
zero_226 2012-04-13
  • 打赏
  • 举报
回复
膜拜达人
崔叫兽 2012-04-13
  • 打赏
  • 举报
回复

(sevan)
等 级:
#7楼 得分:9回复于:2012-04-05 13:04:30
支持楼主!
sjb19880528 2012-04-12
  • 打赏
  • 举报
回复
让我想起了一款遥感影像分析的软件,为学生和研究员准备的。里面也有一个脚本解释器,可以编写脚本将软件开放出来的基本处理函数组织起来对遥感影像进行分析,也可以编写新的影像处理脚本。遥感影像就是系统开放出来的对象,开放出来的对象还有影像处理的中间结果。

这款软件的另一个特色就是编写脚本的方式是绘制流程图,将代表内部函数和对象的图形以及流程控制图用其它的构建连接起来就将脚本写好了。

我觉得这才像是给特别专业化的研究员用的编程语言,可以让研究人员从编程的细节问题中解脱出来,专注于研究。
sjb19880528 2012-04-12
  • 打赏
  • 举报
回复
很好,让我想起了一款遥感影像分析的软件,为学生和研究员准备的。里面也有一个脚本解释器,可以编写脚本将软件开放出来的基本处理函数组织起来对遥感影像进行分析,也可以编写新的影像处理脚本。遥感影像就是系统开放出来的对象,开放出来的对象还有影像处理的中间结果。

roc168 2012-04-12
  • 打赏
  • 举报
回复
牛人。
  • 打赏
  • 举报
回复
[Quote=引用 112 楼 的回复:]

做软件、引擎一定要有个目标,俺做的一个极简单的批处理执行工具(绝对算不上脚本引擎),目的就是降低用户的使用难度,功能却是极简单。
[/Quote]

很有道理 这个就是解释器 模式
  • 打赏
  • 举报
回复
[Quote=引用 110 楼 的回复:]

引用 109 楼 的回复:

如果函数是Native的调用 函数指针?

如果是用户自定义的函数 调用 自定义函数?

那变量的 作用域呢? 运行时的数据保存呢? 这个怎么设计的?


函数是一个函数指针,然后与脚本中的一个符号关联起来,脚本就可以调用了。
函数原型在SDK头文件中有定义:
typedef DWORD ( WINAPI *LPHOST_FUNCTION)(……
[/Quote]

我看明白了,我关心在于你的实现大方向

运行时的时候当前执行函数在栈顶 之前执行函数压入栈中,如果出现闭包,把运行的数据保存入变量

查询变量的时候,先从栈顶查,如果不在的话,查询全局的。。。。。

函数这里有个疑问,你这里是支持外部函数,如果是外部类 或者 组件怎么办

宿主能自定义 对象 而让脚本去实例宿主对应的对象么?
  • 打赏
  • 举报
回复
[Quote=引用 104 楼 的回复:]

引用 98 楼 的回复:

因为方向不同,我写了一套类似vbscript的 SpeedScript 脚本

参考了微软的脚本引擎

看到了楼主的文章,我想询问一下,你是怎么考虑的内嵌宿主的? 比如说如何开放宿主函数 或者 宿主的对象?

我当时写脚本引擎的时候主要考虑对于dsl 架构来说,重要的是面向不是很懂程序 但是很了解业务的人员

所以宿主引擎的重要性 要高于语言特……
[/Quote]

如果函数是Native的调用 函数指针?

如果是用户自定义的函数 调用 自定义函数?

那变量的 作用域呢? 运行时的数据保存呢? 这个怎么设计的?

xqqkl 2012-04-11
  • 打赏
  • 举报
回复
[Quote=引用 98 楼 的回复:]

因为方向不同,我写了一套类似vbscript的 SpeedScript 脚本

参考了微软的脚本引擎

看到了楼主的文章,我想询问一下,你是怎么考虑的内嵌宿主的? 比如说如何开放宿主函数 或者 宿主的对象?

我当时写脚本引擎的时候主要考虑对于dsl 架构来说,重要的是面向不是很懂程序 但是很了解业务的人员

所以宿主引擎的重要性 要高于语言特性。。。。。另外语言尽量越简单越好……
[/Quote]

恩,这位说的太有道里了。

这让我想起了一款遥感影像分析的软件,为学生和研究员准备的。里面也有一个脚本解释器,可以编写脚本将软件开放出来的基本处理函数组织起来对遥感影像进行分析,也可以编写新的影像处理脚本。遥感影像就是系统开放出来的对象,开放出来的对象还有影像处理的中间结果。

这款软件的另一个特色就是编写脚本的方式是绘制流程图,将代表内部函数和对象的图形以及流程控制图用其它的构建连接起来就将脚本写好了。

我觉得这才像是给特别专业化的研究员用的编程语言,可以让研究人员从编程的细节问题中解脱出来,专注于研究。
xqqkl 2012-04-11
  • 打赏
  • 举报
回复
这个必须得顶,以前看到过一个人写了个解释器装到计算机上后,能够把c语言当java script嵌到网页里使用。
yys863 2012-04-11
  • 打赏
  • 举报
回复
谢谢分享,支持一下!!
yejihui9527 2012-04-11
  • 打赏
  • 举报
回复
niu ren
用户 昵称 2012-04-11
  • 打赏
  • 举报
回复
做软件、引擎一定要有个目标,俺做的一个极简单的批处理执行工具(绝对算不上脚本引擎),目的就是降低用户的使用难度,功能却是极简单。
zhangiser 2012-04-11
  • 打赏
  • 举报
回复
学习了。。。
zhouzhipen 2012-04-11
  • 打赏
  • 举报
回复
[Quote=引用 109 楼 的回复:]

如果函数是Native的调用 函数指针?

如果是用户自定义的函数 调用 自定义函数?

那变量的 作用域呢? 运行时的数据保存呢? 这个怎么设计的?
[/Quote]

函数是一个函数指针,然后与脚本中的一个符号关联起来,脚本就可以调用了。
函数原型在SDK头文件中有定义:
typedef DWORD ( WINAPI *LPHOST_FUNCTION)( LPCGSHFPARAM lpParamlist,GSPValue* hResultVal);

运行时的数据保存在一个堆栈中,然后还有一个全局区,详细的一两句也说不清楚。
放鱼 2012-04-10
  • 打赏
  • 举报
回复
喔!什么code?
加载更多回复(91)

16,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧