- 论坛徽章:
- 0
|
你好,对你做编译器很佩服,我有个想法希望你和版里的人能共同研究
首先对你很佩服,但是请不要在代码中用中文,不同的编辑器对中文支持不一样,而且做计算机语言没必要支持中文的关键字和语法。易语言就是个失败的例子。下面转入正题。
我曾用过一个平台,它完全基于FSM(finite state machine)的一个编程平台,给我的印象非常深刻。当时我就想写个库(c/c++的),这个库能够支持有限状态机编程,同时也想如果这个做成编译器会很有特色。感觉楼主有时间和精力做编译器还不如做我这个呢,编译器太多了,你做的几乎很难有人用,但是我的想法不同,这是一个很新颖的东西。我的想法很有用吗?很多人都在努力降低程序员的门槛,我的想法能大幅降低开发者的门槛,对于一个应用,开发者把这个应用作为root, root下面可能有n个States(init,Looping,destroy...)每个state下面可以有其他的子state。整个应用就是一个有开始和终止的有限状态机,任何事件可以使一个state跳转到其他state,当跳转到一个包含子state的状态时,它包含的子state开始活动。可能我的描述让大家迷惑了。
下面举个例子:
root
|----Init(D)
|----EventLoop
|----Destroy
EventLoop
|-----Input(D)
|-----Show
每一个state都有这样的功能:enter,repeat,exit。当跳转到一个state时,原来的state的exit代码被执行,新state的enter被执行,在一个state活动时,它的repeat被反复执行(当然是条件执行,如当事件发生时,其实本质上是该state跳转到自己,但不执行enter和exit, 当然可以自己跳转到自己,那样enter和exit被执行,为了优化所以才有repeat功能)。对于我画的图来说,
首先root的enter被执行,然后root.Init(default state)的enter被执行,root.Init的enter做一些初始化工作后主动跳转到EventLoop state,这样root.exit被执行,然后EventLoop.Input(default state)的enter被执行,接着repeat被执行循化接受输入字符,当用户回车后,该事件触发跳转,这样EventLoop.Input的exit检查字符串并格式化然后跳到EventLoop.Show,在Show的enter中显示输入字符串,当3秒后,timer事件触发EventLoop.Show 跳转到Root.Destroy,EventLoop.Show的exit取消显示字符串,Root.Destroy的enter清理root.Init的初始化数据,并调用退出,root.Destroy的exit被调用,程序退出。
[ 本帖最后由 runforu 于 2008-7-31 15:00 编辑 ] |
|