转实现一个脚本引擎

转实现一个脚本引擎

ID:30449874

大小:135.28 KB

页数:48页

时间:2018-12-30

转实现一个脚本引擎_第1页
转实现一个脚本引擎_第2页
转实现一个脚本引擎_第3页
转实现一个脚本引擎_第4页
转实现一个脚本引擎_第5页
资源描述:

《转实现一个脚本引擎》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

1、转实现一个脚本引擎译者序由于我最近有一个计划,就是写一个适应性很强的脚本语言,这个语言将主要用来处理剧情,希望能够用于绝大多数需要剧情的游戏.于是最近开始找一些关于script的东西来看看,当我在flipcode看到这篇的overview时,见它提到了unreal的脚本系统和字节码和虚拟机,就开始在没有完全读完的情况下翻译这一系列文章(共9篇).在翻译中加一些注释.希望不要误导您,还有为了丰富原文我也加入了几个自己的程序.因为这是我首次翻译这种系列文章,在脚本引擎方面也缺乏经验,所以难免会有一些不当之处,还请大家批评指正.目录PartI:概述PartII:词法分析器PartIII

2、:语法分析器PartIV:符号表&语法树PartV:语义检查&中间代码生成PartVI:优化PartVII:虚拟机(TheVirtualMachine)PartVIII:可执行代码PartIX:高级主题版本列表2000年2月至2000年3月第一稿声明原文发布时间是1999年5月至8月,原文作者是JanNiestadt如果有中文版权的话版权属译者(即燕良)所有如果您觉得有用当然可以转载,不过请保持文章的全部内容,如果您有什么修改意见请与译者联系暂时不可用作商业用途PartI:概述序言OK,在你的引擎中你想有一个脚本语言.首先,确定你需要那种脚本语言;HenryRobinson已经写

3、过了一个各种脚本语言区别的介绍(如果你还没读过就去读一下吧),在这个系列教程中我将讨论一个象虚幻脚本(Unrealscript)那样的编译器/虚拟机系统.下一步,你需要知道两件事:怎样实现那样一个脚本引擎,还有脚本引擎不仅仅是酷而且在实际中十分有用的一些理由.这里是我想到的一些:有用的新语言特性象状态,隐藏代码(latentcode),等等.一个沙盘环境(sandboxenvironment)不会导致游戏引擎的崩溃.不需要游戏内部引擎的只是或者重新编译游戏引擎就可以编写游戏的内容.完全的独立于平台的脚本代码但是也有一些不利因素:相对较慢--脚本的运行至少比可执行代码的执行慢15倍

4、.限制--脚本不能用来建立实际的视觉效果(部分原因是它速度的缺点).编写游戏内容的人必须学习一种新的语言.当然我们不会因为这些就停下来,我们已经准备好实现我们的想法了.现在,从哪里开始呢?必须阅读的东西在虚幻(Unreal)发布前很久我就开始了.我浏览他们的技术站点,并且发现了虚幻脚本参考文档(UnrealScriptreferencedocument).我当然听说过虚幻脚本,但是并不真正知道他是什么.我阅读了这些文档,觉得一个脚本语言的想法实在是很酷.我要自己写一个,然后连接到一个游戏引擎,以便我的游戏的整个世界都可以轻松的建立新的内容.幸运的是我有一个学期的编译器构造课程(燕

5、良注:我也刚学了一个学期的编译原理,还考了92分,嘻嘻,不过Julien当时竟然只用两个月就考了98分,佩服,佩服),并且作为一个实际的任务我曾经实现过一个非常非常简单的Pascal编译器.我开始并行工作,更好,编译器.我已经有一个接受C的子集的可工作的版本,但是我用了2周来编码,其内部结构相当的可怕,.我不得不完整的重新设计那东西.我相信你在某些地方有与我相似的经验.现在我依然在做这东西,并且学到了很多关于编译器的知识.现在,接触一点有用的信息吧.首先,我建议所有想要编写一个编译器的人弄一本龙之书.你们中的大多数(尤其是象我这样的计算机系学生)可能已经知道了这个(燕良注://s

6、hake).告诉那些不知道的人,我是在说Aho,Sethi和Ullman所著的Compilers-Principles,TechniquesandTools(ISBN0-201-10194-7).因为他的封面有一条龙,所以得到了龙之书的名字.相信我,所有对编译器有所了解的人都读过这本书(燕良注:国内有卖吗?).这本书从1986年就不曾修改过,这是因为从60年代编译器的设计基本技术就没有变过.当然,这本书不涉及面向机器的优化,但是有其他书.此外,我们想要编译出字节码(bytecode)而非机器码.其次,如果你想要得到一个快速实现字节码脚本语言的预览GamaSutra的一篇文章.那是

7、一个值得一读的关于实现Jedi骑士脚本语言的故事.那里的所有的东西我也将涉及,但是那仍然是值得一读的.我们需要什么一个编译器基本上包括一下这些组成部分:一个符号表,其中存储所有的符号及其信息,例如类型,范围,等等.一个词法分析器,他的功能是将字符流(例如源文件)转换为记号(例如关键词,操作符等等).一个语法分析器(parser),他的功能是读取记号流,并建立语法树.一个语义检查器,用来检查语法树的语义错误.一个中间代码生成器,用来把语法树转换为中间代码一个优化器,用来优化中间代码

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。