ソースファイルについて

このコードはVisualStudio2005 Professional版でコンパイルしています。

また、字句解析コード生成にflex、構文解析コードにbisonを利用しています。
flex・bisonはCygwin用のものを利用しています。
ある程度新しいバージョンでないとflexがC++用のコードを生成しないため、できるだけ新しいバージョンを利用してください。
(利用しているのはbison 2.3とflex 2.5.4)
Visual Studioの設定で「ツール」→「オプション」→「ディレクトリ」で「表示するディレクトリ」にbison・flexのあるディレクトリを追加しておいてください。
また、コンパイルの際にはflexに付属のFlexLexer.hが必要です。

(ぼやき)
コードを書いてる本人はC++に慣れてないので、非常に書き方が汚いですが勘弁してください(^^;
クラスは基本的に使っていませんが、STLのvector・map・stringを使っています。
構造体にFORとかIFとかDOなどどの文や式のスタイルかを示す変数を持たせているんですが、せっかくだからデザインパターンのInterpleterを使ってみてもよかったかも。

各ソースファイル

projectディレクトリ内
jbc.slnVisualStudioのソリューション
jbc.vcprojVisualStudioのプロジェクト
project\srcディレクトリ内
jbc.cpp全体の流れ
jbc.h同ヘッダーファイル
jbc.lflexに処理させる字句解析定義ファイル
jbc.ybisonに処理させる構文解析定義ファイル
jbcdata.hデータ構造
jbcjava.cppJavaのバイトコード出力
jbcjava.h同ヘッダーファイル
jbclexer.cppjbc.lからflexが生成した字句解析コード
jbcmisc.cpp色々な処理(プログラムの文字列の出力や、ポインタのdelete)
jbcparse.cppjbc.yからbisonが生成した構文解析コード
jbcparse.hpp同自動生成されたヘッダーファイル
(jbcparse.output)同自動生成された構文解析情報
(jbc.exeと同じディレクトリに移動してあります。bisonを利用するとまた生成されます。)
jbctype.cpp型チェック
misc.cpp色々な処理(文字コードの変換SJIS・UTF-8、Javaクラスファイルの解析)

やり足りないこととか

今のところint・float・stringしか扱えず、任意のクラスを用いることができない。
局所的な最適化しか行っておらず、変数の流れを追った最適化とかは全くしていない。

appletを継承してアプレットを作れるようにしようかなと思ったけど、そうするとint、float、string以外に型を作らなきゃ行けないのでやめた。(Graphicsを直接サポートしないにしてもObjectを持てればRTClassに描画関連の機能を持たせて描画できるけど・・・)
構造体を使えるようにするとわざわざクラス定義せずに構造体が気軽に使えて便利かも?