長い歴史を持ち、括弧を多様する独特の書式が特徴的なプログラミング言語Lisp。作成難易度が低いことからインタプリタ作成用の素材として採用されることも多い言語です。
本日紹介する「mal(Make a Lisp)」はそのようなLispインタプリタの作成方法を学びたい方のツールです。ClosureにインスパイアされたLispインタプリタで、現在65のプログラミング言語に対応しています。
ドキュメントによってmalの実装方法が丁寧に解説されているため、何らかの言語処理系を作成方におすすめの言語となっています。
目次
ステップ形式で学習
malを実例に利用したLispインタプリタの作成方法は、The Make-A-Lisp Processというドキュメントで詳しく説明されています。
ステップバイステップ形式になっていて、"Step 0"のREPL (対話型評価環境)を作成するところから、最終段階の"Step A"でmalでmalを実装するところまで段階的に進んでいく形式です。
malのリポジトリには65の言語で実装されたソースコードがサブフォルダ毎に格納されていて、例えばRuby版malの場合以下のようにしてアクセス可能です。
cd ruby ruby stepX_YYY.rb
stepXはドキュメントの各Stepに対応しているため、動作確認しながら学習することができます。プログラミング処理系の作成に興味のある方は、参照してみてはいかがでしょうか。