教你使用swift寫編譯器玩具(0)

前言

在上學(xué)期學(xué)完編譯原理之后總想搞個(gè)大事情,于是就萌生了寫編譯器的想法。在多方查找之下我發(fā)現(xiàn)了LLVM的官方教程。這個(gè)教程實(shí)現(xiàn)了一門玩具語(yǔ)言叫做Kaleidoscope。在官方教程中提供了即時(shí)編譯執(zhí)行以及生成目標(biāo)文件被C++調(diào)用的兩種執(zhí)行方法,我在工程中也有一一對(duì)應(yīng)實(shí)現(xiàn)。

官方教程是用C++寫的,我就想能不能用swift來(lái)寫呢?結(jié)果還真給我找到了辦法,網(wǎng)上有一個(gè)現(xiàn)成的swift開(kāi)源庫(kù)LLVMSwift,封裝了LLVM。當(dāng)然我覺(jué)得不用這個(gè)庫(kù)直接使用LLVM也是ok的,其實(shí)這樣反而更貼近官方教程,使用那個(gè)開(kāi)源庫(kù)還得理解它的邏輯。

于是我把他們教程的前8章都寫完了,倉(cāng)庫(kù)在這

教程如下:

教你使用swift寫編譯器玩具(0)

教你使用swift寫編譯器玩具(1)

教你使用swift寫編譯器玩具(2)

教你使用swift寫編譯器玩具(3)

教你使用swift寫編譯器玩具(4)

教你使用swift寫編譯器玩具(5)

教你使用swift寫編譯器玩具(6)

教你使用swift寫編譯器玩具(7)

教你使用swift寫編譯器玩具(8)

倉(cāng)庫(kù)在這

開(kāi)始

作為第0章我們首先要完成的是安裝LLVM。網(wǎng)上關(guān)于這方面的文檔非常少,這個(gè)自己摸索的過(guò)程真是十分痛苦,下面說(shuō)一下如何去安裝LLVM并在xcode中使用。

下載LLVM

首先我們通過(guò)homebrew下載LLVM

brew install llvm

下載完LLVM我們繼續(xù)下載pkg-config

brew install pkg-config

不使用LLVMSwift

你需要在xcode直接引入LLVM可以通過(guò)添加環(huán)境到.bash_profile文件中實(shí)現(xiàn)

# 在.bash_profile下配置llvm命令行,具體情況根據(jù)你所安裝的llvm版本不同
export PATH=/usr/local/Cellar/llvm/8.0.0_1/bin:$PATH;

然后在Xcode->Build Settings->Search Paths->Header Search Paths中添加

/usr/local/opt/llvm/include
/usr/local/opt/llvm/lib

使用LLVMSwift

下載來(lái)之LLVMSwift的腳本。

在Package中添加

.package(url: "https://github.com/llvm-swift/LLVMSwift.git", from: "0.5.0")

并在target中依賴LLVM

dependencies: ["LLVM"]

配置環(huán)境

swift utils/make-pkgconfig.swift

編譯工程

swift build

build完成之后就可以在工程中引入LLVM并使用LLVMSwift了。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容