7
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Orelang(俺言語) の LLVM IR コンパイラを作ってみた

Last updated at Posted at 2016-12-03

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だけです。

7
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?