投稿

12月, 2015の投稿を表示しています

Swift Compiler Architecture (Swiftコンパイラの構造)

Swiftがオープンソースになって公開された資料の中でSwiftのコンパイラについて書かれている部分を抜粋し、日本語に訳す。意味がわからないところは(?)を付けた。 Compiler and Standard Library The main Swift repository にはSwiftのコンパイラとスタンダードライブラリのソースコードがあります。 Compiler Architecture Swiftで書かれたソースコードからLLVM IRに変換される工程です。上から下に流れていきます。 Parsing ( lib/Parse ) : parserはソースコードをAbstract Syntax Tree (AST)に変換します。ここでは意味の情報も、型の情報も扱いません。ソースに文法の問題があるときはメッセージを出します。 Semantic analysis ( lib/Sema ) : parseされたASTを整形された型チェック済みのASTに変換します。意味の問題があるときはメッセージを出します。ここには型推論が含まれます。 Clang importer ( lib/ClangImporter ) : Clang modules をインポートします。そしてCやObjective-CのAPIと対応するSwiftのAPIをmapします(?) SIL generation ( lib/SILGen ) : Swift Intermediate Language (SIL)とはSwift用の中間言語で、さらなる分析と最適化に適しています。SIL generationは型チェック済みのASTを"生の"SILに"レベル下げ"します。 SIL guaranteed transformations ( lib/SILOptimizer/Mandatory : 変数の初期化などのデータの流れを診断します。この工程を終えると“canonical(正式な)” SILとなります。 SIL Optimizations ( lib/SILOptimizer/Analysis と lib/SILOptimizer/ARC と lib/SILOptimizer/LoopTransforms と lib/SILOp