摘要:
GEF 概述 GEF 假定您拥有一个希望以图形方式显示和编辑的模型。为了做到这一点,GEF 提供了可在 Eclipse 工作台中任何地方使用的查看器(类型为 EditPartViewer )。象 JFace 查看器一样,GEF 查看器是 SWT 控件上的适配器。但是它们的类似之处仅此而已。GEF 查看器基于模型-视图-控制器(model-view-controller,MVC)体系结构。 控制器作为视图和模型之间的桥梁(请参阅图 1)。每个控制器(即本文所谓的 EditPart)负责将模型映射到它的视图,也负责对模型... 阅读全文
posted @ 2008-07-21 23:14
ajuanabc
阅读(272)
评论(0)
推荐(0)
摘要:
首先我们来创建一个基于 GEF 的浏览器(而不是编辑器),也就是说,它只能浏览一个模型,而不能够进行编辑。先关注于浏览而不是编辑,有助于理解 GEF 的一些核心的概念。 GraphicalViewer 和 createControl () 方法 ... 阅读全文
posted @ 2008-07-21 22:42
ajuanabc
阅读(183)
评论(1)
推荐(0)
摘要:
当玩家书写一个脚本时,如果写错了脚本,那么肯定运行不了。现在就来分析怎么样确保脚本是正确的问题,如果不正确就需要显示出来那里不正确。脚本是否正确,其实是根据脚本的语法来判断的。那么又怎么样来构造语法分析的程序呢?在第二人生里是通过使用程序bison.exe来创建的。下面先来看看bison.exe是做什么东西的:Yacc 代表 Yet Another Compiler Compiler。 Yacc 的 GNU 版叫做 Bison。它是一种工具,将任何一种编程语言的所有语法翻译成针对此种语言的 Yacc 语 法解析器。它用巴科斯范式(BNF, Backus Naur Form)来书写。按照惯例,Y 阅读全文
posted @ 2008-07-21 00:22
ajuanabc
阅读(186)
评论(0)
推荐(0)
摘要:
定义 XML 和编码 经常使用的缩写词 DOM:文档对象模型(Document Object Model)DTD:文档类型定义(Document Type Definition)HTML:超文本标记语言(Hypertext Markup Language)IDE:集成开发环境(Integrated Development Environment)SAX:XML 简单 API(Simple API for XML)XSD:XML 模式定义(XML Schema Definition)XML:可扩展标记语言(Ext... 阅读全文
posted @ 2008-07-20 17:26
ajuanabc
阅读(180)
评论(0)
推荐(0)
摘要:
前面分析词法分析的代码生成,并且生成可编译的C++文件,那么它是怎么调用这个词法分析文件的呢?下面就来了解它的调用过程。当你在第二人生里创建物体后,就可以编辑脚本了,当完成脚本编写之后就需要保存起来,这时就会触发脚本编译。它就如下调用:#001 void LLLiveLSLEditor::uploadAssetLegacy(const std::string& filename,#002 LLViewerObject* #003 object,#004 const #005 LLTransactionID& tid,#006 BOOL #007 is_running)#008 阅读全文
posted @ 2008-07-17 22:32
ajuanabc
阅读(162)
评论(0)
推荐(0)
摘要:
前面介绍了flex文件的格式,那么flex程序又把这个文件生成怎么样的文件呢?下面就来仔细分析这个文件,由于flex程序生成C++的文件格式,那么就需要C++的编译器才可以编译了。它的代码如下:#001 #line 2 "lex_yy.cpp"这行是行号同步使用。#002 /* A lexical scanner generated by flex */#003 #004 /* Scanner skeleton version:#005 * $Header: /home/daffy/u0/vern/flex/RCS/flex.skl,v 2.91 96/09/10 16:5 阅读全文
posted @ 2008-07-15 23:35
ajuanabc
阅读(157)
评论(0)
推荐(0)
摘要:
下面来分析flex文件的最后一部份,就是辅助代码部份,这部份代码是原封不动地拷贝到生成的文件里。它的代码如下:#001%%这个双百分号开始,就表示flex文件的第三部分开始了。#002#003LLScriptAllocationManager*gAllocationManager;定义分配管理器指针。#004 LLScriptScript *gScriptp;定义脚本的指针。#005#006// Prototype for the yacc parser entry point#007int yyparse(void);前置声明yacc的语法分析的函数。#008#009int yyerror( 阅读全文
posted @ 2008-07-13 21:20
ajuanabc
阅读(146)
评论(0)
推荐(0)
摘要:
接着上一次,再来分析flex文件的下一部份:规则部份。它们由一连串带有代码的正则表达式组成,当匹配相对应的正则表达式时,这些代码就会被运行。下面就一段规则的代码:#001%%这行表示规则代码开始。#002"//" { gInternalLine++; gInternalColumn = 0; comment(); }这里使用“//”来表注释一行代码。#003#004"integer" { count(); return(INTEGER); }这里识别关键字integer为整数据处理。#005"float" { count(); ret 阅读全文
posted @ 2008-07-11 22:25
ajuanabc
阅读(144)
评论(0)
推荐(0)
摘要:
从前面的脚本可以看到它的代码,也理解它的意思了,但是它是怎么样执行的呢?又是怎么样变成可执行的脚本呢?下面就来分析这部份相关的代码。要了解脚本执行,就得把脚本中的每一个单词识别出来,如下: default { state_entry() { llSay(0, “Hello, Avatar!”); } touch_start(integer total_number) { llSay(0, “Touched.”); } } 把上面的脚本识别... 阅读全文
posted @ 2008-07-10 22:32
ajuanabc
阅读(160)
评论(0)
推荐(0)
摘要:
Ant是一种基于Java的build工具。理论上来说,它有些类似于(Unix)C中的make ,但没有make的缺陷。 既然我们已经有了make, gnumake, nmake, jam以及其他的build工具为什么还要要一种新的build工具呢?因为Ant的原作者在多种(硬件)平台上开发软件时,无法忍受这些工具的限制和不 便。类似于make的工具本质上是基于shell(语言)的:他们计算依赖关系,然后执行命令(这些命令与你在命令行敲的命令没太大区别)。这就意味着你 可以很容易地通过使用OS特有的或编写新的(命令)程序扩展该工具;然而,这也意味着你将自己限制在了特定的OS,或特定的OS类型上. 阅读全文
posted @ 2008-07-09 18:42
ajuanabc
阅读(177)
评论(0)
推荐(0)