自己动手实现Lua:虚拟机、编译器和标准库
上QQ阅读APP看书,第一时间看更新

1.2 准备目录结构

如果读者跟着本书一起编写代码,那么在每一章的最后,都会提供一份完整的源代码,可以独立编译为可执行程序。除第1章之外,每一章的代码都以前一章代码为基础,逐渐添加功能,最终实现一个完整的Lua解释器。建议读者跟随本书的每一章,自己输入代码,循序渐进完成Lua解释器的开发。当然直接从GitHub上下载源代码,只编写自己感兴趣的部分也是完全可以的。

作为开始,我们需要创建一个根目录,然后在里面创建go和lua子目录。其中go目录里存放每一章的Go语言源代码,lua目录里存放每一章的Lua语言示例和测试代码。读者可以在任何位置创建根目录,在本书后面的内容里,我们将使用“$LUAGO”来表示这个目录,出现的路径也都是相对于该目录的相对路径。$LUAGO的目录结构如下所示。

        $LUAGO/
            go/
                ch01/src/
                ch02/src/
                ...
            lua/
                ch01/
                ch02/
                ...

万事开头难。作为一本介绍编程语言实现的书,按照惯例,当然也要从“Hello, World! ”程序开始。请读者打开命令行窗口,执行下面的命令。

        $ cd $LUAGO/go/
        $ mkdir -p ch01/src/luago
        $ export GOPATH=$PWD/ch01

上面的命令创建了本章的目录结构,并且设置好了GOPATH环境变量(关于GOPATH的介绍,请参考https://golang.google.cn/doc/code.html)。请读者在go/ch01/src/luago目录下面创建main.go文件,现在完整的目录结构如下所示。

        $LUAGO/
            go/ch01/src/luago/main.go
            lua/

打开main.go文件,在里面输入如下代码。

        package main

        func main() {
            println("Hello, World! ")
        }

在命令行里执行下面的命令编译“Hello, World! ”程序。

        $ go install luago

命令执行完毕,如果没有看到任何输出,那么就表示编译成功了。go/ch01/bin目录下会出现luago可执行文件,直接运行就可以看到“Hello, World! ”输出。

        $ ./ch01/bin/luago
        Hello, World!