HaskellでLisp to LLVM IRコンパイラ その1
とりあえず作り始めた。
基本戦略としては、まずは数値計算だけのコードをLLVM IRに変換するのを目的に:
の流れでコンパイルしていく。
長期的にはLLVM IR上でLispValを表すStructを作る必要があるのかなーと漠然と考えているが、まだ先のことである。
かなり長い間、LLVM IRとにらめっこしていて「どうしたらASTからLLVMに変換できるだろう」と悩んでいたのだが、中間言語を間にかませると変換がわかりやすくなった。純粋な形でのAST→SSAの変換と、SSAをLLVM IRに特殊化させる変換をわけて考えるのがポイント。
REPLと違ってチュートリアルを再構築するわけではないので色々と手探りになるがかなり楽しみ。