実はかなりできているPCP
高木です。おはようございます。
先日からこの話題ばかりですが、今回もPCP: C++ Preprocessorについてです。
タイトルの通り、PCPは既にかなりのところまでできています。
あとは、いろいろなケースをテストするのと、ライブラリを充実させるのが主な仕事になっています。
機能拡張もそれなりにはやりたいと思っています。
このページの最後にダウンロード用のリンクを貼っておきますので、興味がある方は触ってみてください。
動作させるにはPHP 7.1以上が必要です。
ZIPファイルにはpcp.pharというファイルが入っています。
これをPHPで実行すれば動かすことができます。
たとえば、コマンドラインから次のようにして実行します。
php pcp.phar foo.pcp
ここでは、foo.pcpというソースファイルを前処理しています。
前処理した結果は標準出力に吐き出されますが、-oオプションを使えば出力先のファイルを指定することも可能です。
なお、Unix系の環境なら(Msys2でしか確認していませんが)、パーミッションを実行可能にしてあげればpcp.pharを直接実行できるかと思います。
pcp.pharをpcpにシンボリックリンクしておくと便利でしょう。
ほかには、-dオプションを使えば#line指令を埋め込むことができます。
C++コンパイラではおなじみの-Iオプションや-Dオプションも使えます。
別のソースファイルを取りこむには、pcp_include関数を使ってください。
pcp_include関数には取りこむファイル名を渡しますが、-Iオプションで指定したディレクトリからファイルを探索します。
-Dオプションは、マクロではなく(PHPにはマクロがないので)定数を定義します。
-hオプションを使えばオプションの一覧を取得できます。
まだ、あまり意味をなさない(指定しても定数が定義されるだけとか)オプションもありますが、いろいろ試してみてください。