论文部分内容阅读
在很多情况下,由于受表达机制(语法构造,控制结构,组合手段等)的限制,我们无法用通用编程语言来构建一个清晰、自然和高效的解决方案,而这时针对特定问题的领域特定语言则是一个很好的选择。因此,如果开发人员能够方便地创造适合他们自己需求的领域特定语言将是极有意义的。 本文以动态语言Lua为例,设计并实现了一个支持静态元编程的可扩展式开放Lua编译器——OpenLua,它能够支持程序员在无需改动编译器的情况下扩展语言的语法设施,从而快速地构造出领域特定语言。 文章首先介绍了静态元编程和开放式编译器的基本概念,也简要介绍了标准Lua语言,同时还对OpenLua做了一个概览。 接着详细描述了OpenLua在语言层面对标准Lua所做的扩展,包括OpenLua为了支持静态元编程和自定义语法而为标准Lua语言引入的3个新的语法设施——用户自定义语法,源代码转换子,编译期模块导入。跟着介绍了OpenLua编译器为静态元程序提供的可编程接口和运行环境。 然后详细描述了OpenLua编译器的实现,包括作为OpenLua开放式架构基础的开放式词法分析算法、开放式SLR解析算法以及用户自定义语法的确定性递归下降解析算法等。接着解释了编译器如何处理与静态元编程相关的3个新的语法设施和转换子调用,即它们的语义。然后还深入探讨了编译器提供的可编程接口和元程序运行环境的实现。 随后作者通过给出OpenLua的若干有趣应用来展示开放式架构可以如何支持语言的扩展。也介绍了该领域的相关研究工作,并将OpenLua与它们做了比较,最后分析总结了OpenLua的不足,并提出了相应的改进计划。