近頃版/another blog@hatena/Wiki/BBS
< 半分休み | ISBN10 / ISBN13 convert by perl >
define SYMBOL = {
...
}
...
Page view0{
SYMBOL
}
上記のような記法で書かれたマクロ記述を超いいかげんに読み取り/適用するperlスクリプトを書いた。少し前から仕事で使っている。
#!/usr/bin/perl
use strict;
my(%macro_define);
my($macro_pattern);
while(<>){
if(/define\s*(\w+)\s*=\s*\{/){
my $macro = $1;
my $define;
my $count = 0;
while(<>){
if(/\{/){
$count++;
}
if(/\}/){
$count--;
last if $count < 0;
}
$define .= $_;
}
$macro_define{$macro} = $define;
$macro_pattern = join('|', sort {length($b) <=> length($a);} keys %macro_define);
next;
}
while(s/($macro_pattern)\n*/$macro_define{$1}/eg){};
print;
}
_しかしこんなインチキで漏れも多いものじゃなくてもう少しマシなマクロが欲しくなってきた気もする。というか、本当に必要なのはコンパイラ(トランスレータ?)を簡単に作るためのパーサーコアか?
素直にschemeかなんかを使えるようになれよ、という話かもしれないけど。