美文网首页使用swift写编译器玩具
教你使用swift写编译器玩具(0)

教你使用swift写编译器玩具(0)

作者: QYiZHong | 来源:发表于2019-08-10 13:17 被阅读0次

    前言

    在上学期学完编译原理之后总想搞个大事情,于是就萌生了写编译器的想法。在多方查找之下我发现了LLVM的官方教程。这个教程实现了一门玩具语言叫做Kaleidoscope。在官方教程中提供了即时编译执行以及生成目标文件被C++调用的两种执行方法,我在工程中也有一一对应实现。

    官方教程是用C++写的,我就想能不能用swift来写呢?结果还真给我找到了办法,网上有一个现成的swift开源库LLVMSwift,封装了LLVM。当然我觉得不用这个库直接使用LLVM也是ok的,其实这样反而更贴近官方教程,使用那个开源库还得理解它的逻辑。

    于是我把他们教程的前8章都写完了,仓库在这

    教程如下:

    教你使用swift写编译器玩具(0)

    教你使用swift写编译器玩具(1)

    教你使用swift写编译器玩具(2)

    教你使用swift写编译器玩具(3)

    教你使用swift写编译器玩具(4)

    教你使用swift写编译器玩具(5)

    教你使用swift写编译器玩具(6)

    教你使用swift写编译器玩具(7)

    教你使用swift写编译器玩具(8)

    仓库在这

    开始

    作为第0章我们首先要完成的是安装LLVM。网上关于这方面的文档非常少,这个自己摸索的过程真是十分痛苦,下面说一下如何去安装LLVM并在xcode中使用。

    下载LLVM

    首先我们通过homebrew下载LLVM

    brew install llvm
    

    下载完LLVM我们继续下载pkg-config

    brew install pkg-config
    

    不使用LLVMSwift

    你需要在xcode直接引入LLVM可以通过添加环境到.bash_profile文件中实现

    # 在.bash_profile下配置llvm命令行,具体情况根据你所安装的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

    下载来之LLVMSwift的脚本

    在Package中添加

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

    并在target中依赖LLVM

    dependencies: ["LLVM"]
    

    配置环境

    swift utils/make-pkgconfig.swift
    

    编译工程

    swift build
    

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

    相关文章

      网友评论

        本文标题:教你使用swift写编译器玩具(0)

        本文链接:https://www.haomeiwen.com/subject/urcrjctx.html