教你使用swift写编译器玩具(0)
前言
在上学期学完编译原理之后总想搞个大事情,于是就萌生了写编译器的想法。在多方查找之下我发现了LLVM的官方教程。这个教程实现了一门玩具语言叫做Kaleidoscope。在官方教程中提供了即时编译执行以及生成目标文件被C++调用的两种执行方法,我在工程中也有一一对应实现。
官方教程是用C++写的,我就想能不能用swift来写呢?结果还真给我找到了办法,网上有一个现成的swift开源库LLVMSwift,封装了LLVM。当然我觉得不用这个库直接使用LLVM也是ok的,其实这样反而更贴近官方教程,使用那个开源库还得理解它的逻辑。
于是我把他们教程的前8章都写完了,仓库在这
教程如下:
开始
作为第0章我们首先要完成的是安装LLVM。网上关于这方面的文档非常少,这个自己摸索的过程真是十分痛苦,下面说一下如何去安装LLVM并在xcode中使用。
下载LLVM
首先我们通过homebrew下载LLVM
1 |
|
下载完LLVM我们继续下载pkg-config
1 |
|
不使用LLVMSwift
你需要在xcode直接引入LLVM可以通过添加环境到.bash_profile文件中实现
1 |
|
然后在Xcode->Build Settings->Search Paths->Header Search Paths中添加
1 |
|
使用LLVMSwift
下载来之LLVMSwift的脚本。
在Package中添加
1 |
|
并在target中依赖LLVM
1 |
|
配置环境
1 |
|
编译工程
1 |
|
build完成之后就可以在工程中引入LLVM并使用LLVMSwift了。
本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!