俺的回收站

架构分析 解释编译原理
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理
通过 static class 概念,让所有的一切都可以以类的观点进行处理了!漂亮的solver!模块这一概念也可以视作一个static class.
真是好主意,看来俺的TurboScript需要重新构思类型系统了。

模块其实就是一个 static class, 模块中的的函数则是static method——和原来的函数一样,没有额外附加参数(static method 是没有 this 指针的),模块变量也成了模块类的字段成员。
抛弃我以前的设计的模块概念,从设计static Class 开始重新规划 TurboScript 的内存镜像,首先规划 TTurboStaticClassInfo,用来容纳runtime 的static class, 规划这个就首先要搞清楚,什么是static class:
static class 实际上就是 abstract and sealed class,并且规定在该类中只能定义static 字段和方法,类型定义应该不限制(至少我不限制,我还指望从它建立模块类呢)。

  • abstract 限制住创建从该实例
  • sealed   限制住从该类上派生
ok,通过功能描述,我们就该知道,我们需要在TTurboStaticClassInfo 上定义静态字段列表,方法列表,类型列表来容纳静态类声明的字段,方法和类型。

TurboScript 的模块是保存于文件的最小的单位,是各种类型函数的集合。引用的是模块。同时也是内存的最小单位,只有模块才拥有代码区和数据区。

TTurboModuleInfo 从 TTurboStaticClassInfo 上派生,其静态字段就是模块变量,静态方法就是模块函数。类型声明就是模块的类型声明,和TTurboStaticClass相比多的就是引用类型列表和引用模块列表。