目录 | 第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页 |