OpenLua简介:一个支持静态元编程的可扩展式开放编译器

OpenLua是一个支持静态元编程的可扩展编译器,允许在编译期运行元程序,改变默认编译行为。它提供了高层接口供元程序操纵源代码的内部表示,如抽象语法树。编译器后端调用这些接口以获取中间表示,增强了编译器的开放性。
摘要由CSDN通过智能技术生成

邓际锋 <soloist.deng#gmail.com>

本文采用 Creative Commons Attribution-ShareAlike 2.5 许可证

零、 从哪里获得OpenLua 

    OpenLua的项目主页是http://www.luachina.org/projects/openlua/ ,2005年12月28日0.01版发布,所有的源代码可从这里下载。因为Lua是主要的开发语言,所以在你的机器上必须有一个Lua语言编译器并且它位于当前目录或PATH环境变量指定的目录中。为了方便,作者在源代码包中提供了一个Windows平台的Lua编译器—— luac.exe。另外,项目的makefile是针对Windows和Visual C++编写的,用nmake命令即可构建出可执行文件。适用于其它平台的makefile可以很容易在这个Windows版的基础上改写。这里提供已构建好的运行于Windows平台的可执行文件。 

一、 基本概念介绍

1、 静态元编程
    元(meta)这个词是从希腊词汇中借来的,意为“after”或者“before”,用于表示级别的改变。而在计算机科学中,它主要表示“being about”(关于)的意思。因此元程序(meta-program)是关于程序本身的程序,正如元数学(meta-mathematics)是关于数学本身的数学一样。

    元程序实际上可以在不同的语境(context)和不同的时间段运行,但如果元程序是在它们操纵的代码被载入(loaded)之前运行的话,那么就称其为静态元程序(static meta-program),相应的设计活动称为静态元编程(static meta-programming)。包含静态元程序的系统最常见的例子就是编译器和预处理器。这些系统操纵表示输入的内部数据结构(比如抽象语法树),并把它们转换为使用其它语言(例如汇编)或者同样语言但结构被修改了的程序。 

    在编译期运行的元程序只是静态元程序的一种,不过却是非常常见的一种。如果没有特别说明,本文剩下部分提到的元程序或静态元程序均特指编译期运行的静态元程序。如果要让元程序在编译期运行,那么编译器就有义务为它们提供一个完整的执行环境(execution environment)。

2、 开放式编译器 

    开放式编译器(open compiler)的思路是向静态元程序提供某些定义良好的高层接口,使其能够改变默认的编译动作(比如按照新的语法来解析源代码),获取并操纵编译过程中源代码的内部表示(比如语法解析树: syntax parse tree)。事实上每一个编译器或多或少都能称得上是开放式的,因为编译器后端(代码生成器)必然要调用前端提供的接口以取得代码的中间表示(通常是抽象语法树或3元组),向元程序提供接口只不过是朝开放的道路上更前进了一步而已。 


二、 研究意义

    从理论上来说

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值