[萨鲁传奇相关]生成任务,及其它
本帖最后由 努塔瑞 于 2010-3-12 20:38 编辑之前提过提交文档生成任务的想法,这里拿一个框架出来,看看php的[是否container向]的实现难度在哪里
[因为我并没有win32下的GUI编程经验,由瓦大定夺下]
————正文段————
【任务生成的脚本格式】
基本的考虑是节省一下(可能的长任务)按顺序写脚本和录入的麻烦。风格上模仿了lex-yacc链和makefile的写法,看下面:
基本组织(注意不是具体语法,我懒得和空白字符较劲):
%%
(任务基本信息格式我没想,大家补充吧)
%%
[脚本段标识符]
!
[脚本段内容,也就是显示出的提示信息]
!
...(自然会有多个脚本段)
%%
[脚本段标识符i] :[脚本段标识符j1] [脚本段标识符j2] ... [脚本段标识符jk]
...(这里表示脚本段的衍生关系,即段i提供的k个选项分别对应j1...jk)
%%
这样前面的脚本段顺序任意写就可以,但是按钮控件的生成会麻烦些。举个例子:
%%
(略,比如兽人与饼之类的)
%%
!
你面前有一个兽人,一张桌子。桌子上有一块饼。
(注释:这里需要指明按钮和其label)
我抢走饼
我转身就走
!
!
兽人一拳秒杀你。你囧了。
!
!
兽人把饼吃掉。你很饿。
!
%%
beginid: scene
scene : branch1 branch2
%%
这样生成一个双分支的任务。注意关键字beginid标明了起始环节。
重申这不是最终语法。比如依赖关系的下一行可以定义语义动作,像是makefile一样(或者,语法制导)……
解析文档的瓶颈在于大任务的情况下不可能缓存很多脚本段内容,可能需要对输入流对象做点手脚(我不知道php是不是这么说。如果流指针没有setter或者索性是private而非protected就很麻烦),或是牺牲一点时间做线性查找,再或是管道一下什么的?
另外的天生瓶颈在于,由于是分支性选择的任务,不难想象很可能存在指数级的段数量增长。即使像上面的衍生关系用DAG表达,恐怕可重复利用的脚本段节点也不在多数。也许考虑引入一个链接机制,把大任务分成许多部分制作,然后用链接脚本统一链接会节省解析时间和空间。(我是在抄GNU ld吧……)
总之乱七八糟,大家批评看~
页:
[1]