[大脚蟹] 2017-01-09 09:50 我来说两句  

2012年,在阿莫网发布的贴子,转载过来留念

有没有人搞脚本引擎开发的?有兴趣的进来讨论一下
http://www.amobbs.com/thread-5477262-1-1.html

有没有人搞脚本引擎?我正在开发一个脚本引擎OniuScript,准备用於我接下来准备开发的USB-CNC控制系统,以便让系统更灵活的控制机械。

因为机械和硬件驱动都不是我的强项,所以我只专注控制系统(控制软件和控制板),加入了脚本引擎之后,可以让整个系统都可以和机械“实时交互”。
目前我设计的OniuScript,语法基於Pascal,但并不全是。大概是60%取自於Pascal,20%取之於C++,20%取之於Lua(也是脚本语言)。

Pascal 语法我个人认为很不错,但我最讨厌是的赋值语句(比如 a := 1;),因为经常会跟C语言混了,特别是在软硬件一起开发的时候,这毛病经常患。
但除了这个,其它的都很不错。

C/C++ 语法中, += , -= , *= , /= 这几个操作不错,我也要了,但它的 ++ , -- 这两个操作符我没要,因为不是我所需的。

Lua 是个脚本,原本我想直接使用它作为我内定的脚本引擎,因为它的Table元素很强大,这个元素我要了。但我很不喜欢它的变量方式,特别是Local变量域,
所以就仅仅取了它的Table。

我的OniuScript,已经快到第四阶段了。
第一阶段,是词法分析,已经通过。
第二阶段,是语法分析,已经通过。
第三阶段,是生成我的汇编OniuASM,目前已经完成95%,现在是边测边改善,接近完工。
第四阶段,是编写虚拟机,并在宿主系统(比如USB-CNC)中执行。

一旦脚本引擎完工,我就可以策划我的USB-CNC了。不过,我还有个怪念头,就是想把脚本引擎加到STM32里面去,虽然可行,但时间不知道要耗多久,所以仅仅是想想而已^o^。

 

关於RTOS,虚拟机,脚本系统,和GUI的一些胡思乱想
http://www.amobbs.com/thread-5495887-1-1.html

先说说RTOS,现有的RTOS很多,包括UCOS,FreeRTOS,RT-Thread,CoOS,scmRTOS,等等数不胜数。但左右看了一些,发现都不适合我用--换句话说,我不喜欢。
想来想起,最后决定,以UCOS的原理为基础原型,重写我自己的RTOS,基础语言是IAR C++,采用Class和Inherited的方式来写。

虚拟机和脚本系统本来应该是成对出现的,但我觉得可以分开来说,因为,虚拟机是实现,脚本系统注重设计。
加入了虚拟机,可以让OS无限扩展功能,这类似很多很多软件运行在DOS上面类似。

脚本系统也可以说是一个语言开发系统,只是比语言开发系统简单一下,而且它不直接编译成机器码,而是编译成中间码,具体怎么实现则交给虚拟机去做。
它的任务就是把二次开发人员的思路按某种语言的格式转化成中间码,就可以了。脚本系统的另一个目的就是,它隐藏了很多底层细节和驱动,交付给开发人员的,
就仅仅是简单的描述语言和配置而已了。

GUI是独立於前面三者,但又被三者所溶合。所谓独立,是GUI的Style和Skin发生变化的时候,前面三者不需要更改任何程序。所谓溶合,是GUI也依赖RTOS和虚拟机去执行。

上面说了这么多,大家知道我想做什么吗?

假如,我说的是假如,上面四个已经完成了。那么,以下就成了现实。
在一块STM32的板上,用户开机启动,出现一个DOS画面(或是击入WIN命令进入XWin图形界面),
用户可以执行任何内部命令,或是外部命令(DOS?DOS!)。
或是通过USB或TCP/IP下载程序文件来执行。
因为有了虚拟机,用户的可执行文件可以变得很小很小。
因为有了GUI,用户可以通过解控来执行程序。
因为有了脚本系统,用户随时可以更改程序内容。
因为有了脚本系统,开发人员可以很方便的开发一个游戏软件。
因为。。。因为。。。

我在说N年前的长城电脑么,或是个安卓手机???

呵呵,以上所说的,除了RTOS我现在正在研究,而虚拟机和脚本系统我已经实现(基於PC端,参阅此贴),GUI这个对我来说并不是个难事,难是的时间和精力,哈。

刚喝了杯咖啡,边想边打的。