Mozilla
勉強会

Preprocessor

Mozilla 勉強会
2012-08-18

by teramako <teramako@gmail.com>

自己紹介

はてな
id:teramako
Twitter
@teramako
Github
teramako

プリプロセッサ

コンパイル処理において、プリプロセッサ(preprocessor)とは、コンパイラがソースコードをコンパイルする前に、一旦ソースコードに処理を施すためのプログラムである。

プリプロセッサ - Wikipedia より



つまり、C言語とかのアレ

#include <stdio.h>

とか

#ifdef, #endif

とか

Firefox のソースコード

例えば、http://mxr.mozilla.org/mozilla-central/source/browser/base/content/browser.xul

各種環境に対応できるよう、JS,XML,CSSにもプリプロセッサを適用している

C,C++などなら分かるが、
JS,XML,CSSにプリプロセッサ?

Preprocessor.py

使い方

python Preprocessor.py [ options ...] 入力ファイル > 出力ファイル

-D オプション

#ifdef#if,#elif などで使用するキー(と値)の定義

  #if OS == Darwin
  // MacOS用コード
  // ....
  #endif

  #ifdef HAS_FOO
  // FOO の機能を持っているなら...
  // ...
  #endif
  
  python Preprocessor.py -D OS=`uname` -DHAS_FOO foo.js
  

-F オプション

フィルターの使用オプション

オプション 効果
-Fsubstitution 置換処理。@KEY@-Dで定義した値に置換する
-FemptyLines 空行部分の削除
-Fslashslash //のコメント部分を削除。(エラーが出て使えない)
-Fspaces 連続する空白を一つの半角空白にまとめる
  python Preprocessor.py -DOS=`uname` -Fsubstitution foo.js
  
  var OS = "@OS@";
  
おしまい
ご清聴ありがとうございました。