言語処理系 Advent Calender1日目の記事です。 初日なのであまりハードルを上げすにライトなネタを。 趣味でコンパイラを作る際に最終的な出力ファイルを何にするのかは悩みどころです。 手づくりの温かみのあるバックエンドでやるのか、LLVMやC--、COINSを経由するのか、 はたまたJVMバイトコードなどのバイトコードにするのか。 CやJavaScriptに出力するのは相対的に簡単そうで実用的だなぁという感触もあります。 今回はそれなりの言語をちゃちゃっと走らせるための対象プラットフォームとしてJVMを検証するために、 min-camlのサブセットのJVMバックエンドを実装してみました。 サブセットと言っているのはクロージャの対応が終わってないからです。実装の見通しは立ってます。 感想としてはJVMバイトコードへのコンパイルはそれほど難しくないけども JVM特有のつらみがあるとい