スクリプト言語Lua4

いろいろ考えた結果、おそらく一番簡単なのが、luabind用にクラスをエクスポートするジェネレータを書くことです。

class_(L, "Test")
    .def("hoge", &Test::hoge);

luabind を使うとこんな感じで簡単にクラスを出力できるので、rubyperlでこれをやってくれるスクリプトを書けばOKです。javadoc風コメントを使っているなら、@lua指定のあるクラスだけ出力するようにすれば便利だと思います。

実装上の注意としては

  • メソッドのオーバーロードをどうするか?
  • クラス継承をどうするか?
  • publicメソッドだけ抽出するのが意外と面倒。
  • luabindが複雑なので出力を1ファイルにまとめてしまうとコンパイルできない(vc6で大量のクラスを出力するとインターナルエラー)ことがある。

ことぐらいで、これさえ考えれば後は楽勝です。