LLVM-IR(LLVM中間コード)用コンパイラの改良を考え中だ。
・C言語で書いているのを、C++で書き直す?
yaccないしbisonを使って作っていので、そのためC言語で書いている。
うまくラッパーとか作ってC++で書き直したらどうだろうか?
既存のそういうラッパーもありそうなので、それを流用すればいいのかもしれない。
うまくオブジェクト/クラスに切り分けて作るにはどうするのかちょっと悩む。
・yacc(bision)だけではなく、lex(flex)を使ってみる?
上記のC++化にも絡んでくる話だが、基本的にはC言語でのコンパイラ開発用に作られたツールなので、C++化しようとすると使いにくい。
・LLVM-IR用コンパイラ以外も統合する?
以前作ったJavaバイトコード出力版のものや、.NET中間言語MSIL(CIL)出力版のものがあり、コードの半分くらいは共通になっている。
統合して、1つのコンパイラで3種類に対応という形にしてしまったほうがいいのかもしれない。
少なくとも、共通部分は整理して分離したほうがよさそうだ。