braintag

公開してしまう備忘録

#if〜#endifの対応チェックスクリプト


#if〜#endifの対応が取れてなくてコンパイルエラー。
15000行もあるので目視無理。
探してもそういうツールは無かったので、Perlにて自作した。
コマンドラインからcolor.pl aaa.cpp > aaa.htmlと言う風に使う。
以下コード

$normal = "";
@reverse_colors = (
"<span style=\"color:orange;\">1-", # orange
"<span style=\"color:red;\">2---", # red
"<span style=\"color:green;\">3-----", # green
"<span style=\"color:blue;\">4-------", # blue
"<span style=\"color:purple;\">5---------", # purple
"<span style=\"color:lightblue;\">6-----------", # lightblue
"<span style=\"color:yellow;\">7-------------" # yellow
);


@normal_colors = (
"-1</span>", # reverse_black
"---2</span>", # reverse_red
"-----3</span>", # reverse_green
"-------4</span>", # reverse_blue
"---------5</span>", # reverse_purple
"-----------6</span>", # reverse_lightblue
"-------------7</span>" # reverse_yellow
);


$depth = 0;
while (<>) {
chop;
if (/^\s*\#\s*if/) {
$colors = $reverse_colors[$depth];
$depth++;
print $colors,$_, "<BR>\n";
} elsif (/^\s*\#\s*endif/) {
$depth--;
$colors = @normal_colors[$depth];
if($depth < 0){
print "\n\n\n<BR><BR><BR><BR>---error---<BR>\n"
}
print $_, $colors, "<BR>\n";
} else {
print $_, "<BR>\n";
}
}

秀丸に#if〜#endifの対応してくれる機能があったよ・・・orz

まあいいやひさしぶりにPerlいじれたし。