9月末に「プログラミング言語を作る」という記事が投稿されました。俺の考えた最低の言語なので「俺言語」です。まずはそちらをお読みください。
http://qiita.com/shuetsu@github/items/ac21e597265d6bb906dc
JSON形式でプログラムを記述し、それを実行するインタプリタです。多くの人たちが様々な言語で、俺言語インタプリタを実装し、大いに盛り上がりました。
私もC++版を投稿しました。
http://qiita.com/soramimi_jp/items/aa99c00a65579c2e25a2
あれから2ヶ月経ちましたが、最近仕事でLLVMを扱うことになったので、その勉強も兼ねて、俺言語コンパイラを作ってみました。
実際には LLVM IR という中間コードを生成するものなので、厳密にはコンパイラではありません。正しくは、コンパイラのフロントエンド、またはトランスパイラと呼ばれるものです。最終的には、clang
コマンドを用いて、ネイティブ実行形式を生成できます。ここでは、広義な意味でコンパイラということにします。
使い方はMakefile
をお読みください。
LinuxやmacOSなどで動作します。私はDebian/jessieで開発しました。あらかじめllvm/clangをインストールしておく必要があります。llvm/clangコマンドやインクルードやライブラリのパスが違うかもしれませんので、makeするとき、ファイルが見つからないなどのエラーが出た場合は、環境に応じてMakefile
を修正してください。
言語の機能としては、演算子は +
と <=
しか実装していません。制御構文は while
のみです。関数は、数値を表示するためのprint
だけです。