| 目录 | 第1-10页 |
| 章节目录 | 第6-8页 |
| 图目录 | 第8-9页 |
| 示例代码目录 | 第9-10页 |
| 致谢 | 第10-11页 |
| 摘要 | 第11-12页 |
| ABSTRACT | 第12-13页 |
| 第1章 引言 | 第13-19页 |
| ·基本概念介绍 | 第13-14页 |
| ·静态元编程 | 第13页 |
| ·开放式编译器 | 第13-14页 |
| ·研究意义 | 第14页 |
| ·动态语言Lua | 第14-17页 |
| ·简介 | 第14-15页 |
| ·基于原型的面向对象模型 | 第15-17页 |
| ·标准Lua | 第17页 |
| ·本文的主要贡献 | 第17-18页 |
| ·本文的组织结构 | 第18-19页 |
| 第2章 OpenLua概述 | 第19-21页 |
| 第3章 OpenLua的设计与实现 | 第21-47页 |
| ·OpenLua对标准Lua语言的扩展 | 第21-24页 |
| ·语法的形式化定义及其书写规则 | 第21-22页 |
| ·用户自定义语法 | 第22-23页 |
| ·源代码转换子 | 第23-24页 |
| ·编译期模块导入 | 第24页 |
| ·OpenLua提供的可编程接口及元程序运行环境 | 第24-28页 |
| ·开放式词法分析器 | 第28-32页 |
| ·词法分析器、输入流和数据源3层结构 | 第28页 |
| ·词法分析器的extract、peek和unget接口 | 第28-29页 |
| ·用户自定义语法中的终结符问题 | 第29-30页 |
| ·基于栈结构的开放式词法分析器 | 第30-32页 |
| ·OpenLua内建语法的解析 | 第32-39页 |
| ·消除语法的歧义 | 第32-33页 |
| ·开放式SLR解析 | 第33-36页 |
| ·“热切”原则 | 第36-37页 |
| ·与静态元程序相关的3个语法构造的特殊处理 | 第37-39页 |
| ·自定义语法的处理 | 第37-38页 |
| ·转换子定义的处理 | 第38页 |
| ·编译期模块导入语句的处理 | 第38-39页 |
| ·用户自定义语法的解析 | 第39-41页 |
| ·为什么选择LL(1)与递归下降算法? | 第39-41页 |
| ·parse接口的实现 | 第41-44页 |
| ·闭包和upvalue简介 | 第41-42页 |
| ·创建作为闭包的parse接口 | 第42-43页 |
| ·parse与import语句的关联 | 第43-44页 |
| ·编译器其它接口及静态元环境的实现 | 第44-45页 |
| ·lock和unlock | 第44页 |
| ·静态元环境 | 第44-45页 |
| ·转换子的调用 | 第45-46页 |
| ·小结 | 第46-47页 |
| 第4章 应用实例 | 第47-58页 |
| ·宏系统 | 第47-48页 |
| ·编译期求值 | 第48-49页 |
| ·条件编译与循环编译 | 第49-51页 |
| ·条件编译 | 第49-50页 |
| ·循环编译 | 第50-51页 |
| ·面向方面的编程与静态代码织入 | 第51-53页 |
| ·为Lua引入契约式开发机制 | 第53-58页 |
| ·契约式开发简介 | 第53-54页 |
| ·支持契约机制的运行时标准Lua扩展库 | 第54页 |
| ·利用OpenLua改善后的契约机制的实现 | 第54-58页 |
| 第5章 相关研究工作 | 第58-63页 |
| ·Lisp的可编程宏系统 | 第58-59页 |
| ·基于抽象语法树数据类型和语法模板置换的宏系统 | 第59页 |
| ·C++模板元编程技术 | 第59-60页 |
| ·利用自省机制及元对象协议的开放系统 | 第60页 |
| ·意图编程 | 第60-62页 |
| ·其它工作 | 第62页 |
| ·小结 | 第62-63页 |
| 第6章 总结与改进计划 | 第63-66页 |
| ·编译终止问题 | 第63页 |
| ·编译时间 | 第63页 |
| ·用户自定义语法的描述 | 第63-64页 |
| ·具体语法树的操作 | 第64页 |
| ·静态元程序的调试 | 第64页 |
| ·编译器的开放程度 | 第64-66页 |
| 附录A OpenLua语法(BNF格式) | 第66-69页 |
| 附录B OpenLua操作符优先级定义表 | 第69-70页 |
| 参考文献 | 第70-73页 |
| 攻读硕士学位期间发表的学术论文 | 第73页 |