Java プリプロセッサ Ver 2.0
Java 用に考えたプリプロセッサです。
変換後も行番号が変わらないのが特徴です。
それだけしかない(笑)
Python でかかれていますので Python が動く環境であれば OS を問いません。
必要スペック
- Python 2.3 以降
JapenseCodecsが必要です。
- Windowsでの動作
Windows で動作させるには
py2exe
を使って exe にするか、Windows に
Python
をインストールする必要があります。
アーカイブをそのまま使う場合はすでに Windows で実行できる exe が入っていますので、それを使えば問題ありません。
詳しくは同梱されている readme.txt をお読みください。
対象とする人
以下のような人にお勧めです
- 携帯用アプリケーション(iアプリとか)など、制限が多い環境で作らなければならない人
- Javaにプリプロセッサがないことに疑問を感じる人(笑)
<-私だ
- C/C++ が大好きな人
<-私だってば
以下のような人にはお勧めできませんので読まない方が健康にいいと思います
- マクロなんて弊害しかないと思っている人。
多くの人曰く「必要ない機能」らしい(^^;
- ありあまるメモリと巨大なCPUパワー用で動くJavaを書く人
- C/C++ が嫌いな人(笑)
サポートする命令
今のところサポートしているのは以下の命令になります。
- #define 定義 [値]
- #define 定義(func) func
- #ifdef 定義 〜 #else 〜 #endif
- #if 式 〜 #elif 〜 (#else) 〜 #endif
- #include ファイル名
式には defined()と計算式が使えます。
また、以下のコマンドが内蔵されています
| 定義 | _DEBUG 定義時 | 通常 |
| ASSERT(expr) |
if ((expr)==false) throw new Error( __FILE__ + "(" + __LINE__ + "): assert stop" ) |
/* expr */ |
| TRACE(str) |
System.out.println(str) |
/* str */ |
| __FILE__ |
__FILE__が使われているファイル名(文字列) |
"" |
| __LINE__ |
__LINE__があるソースファイルの行番号(文字列) |
"" |
簡単な使い方
基本的にはコマンドプロンプトから実行します
JavaPP /p出力フォルダ [オプション] java_file ...
オプション
| /ifile |
file に定義されている内容を適用する |
C/C++にあるヘッダファイルみたいなの |
| /dkey[=value] |
#define key [value] |
| /g |
#define _DEBUG |
まぁデバッグ用ですな |
| /c |
#定義をコメントアウトせず、消去します |
使ってみる
ダウンロード
Ver 2.0a
古いバージョン
Ver 2.0
Ver 1.03c
- 1.02
最初
- 1.03
#if〜#elif〜#else〜#endifの処理がおかしかったのを修正
- 1.03c
メモリリーク等の細かいバグを修正
- 2.0
Python で大幅書き換え。
- 2.0a
テスト用コードが残っていたのを削除。
文字列中のダブルクォーテーションに対応。
今後の予定
サポートしようと予定しているる命令
予定は未定(笑)
- sprintf みたいな構文
- #define の引数を複数にする
アルゴリズム変えないと駄目っぽいんだよね。。ど〜しよ。。。
- できればマルチプラットフォームにしたいねぇ。ソースを公開して...
サポート
しない
予定の機能
だって面倒なんだもん:-)
- #define の複数行対応
- マクロの中身が複数行になっているときの対応