Flexハック

flexといっても,adobeのやつではなく,スキャナージェネレータの方.

以下のようにflexの-Sオプションでオリジナルのスケルトンファイルを指定することで,生成ファイルをいろいろと調整することができる.応用例としては,Linuxのkernel moduleに組み込むための字句解析器を生成させたり,等.

$ flex -S myflex.skl -o mylexer.c mylexer.l

#http://www.hatena.ne.jp/my 本来,スケルトンファイルはflexの開発者向けの機能らしいが...

ケルトンファイルは,基本的にflexのソースに含まれているflex.sklをベースに自分好みにカスタマイズすれば良いのだが,そのままでは使えない.flex.sklはm4マクロで前処理を行う必要があるのだ.

flex-2.5.33の場合)以下のようにして,flex.sklを前処理する.

$ sed 's/m4_/m4postproc_/g; s/m4preproc_/m4_/g' flex.skl | m4 -P -DFLEX_MAJOR_VERSION=2 -DFLEX_MINOR_VERSION=5 -DFLEX_SUBMINOR_VERSION=33 | sed 's/m4postproc_/m4_/g' > myflex.skl

あとは,myflex.sklを好きなふうにいじればよい.