#!/usr/bin/perl -w
#
# CJKim, 9-May-2016
#
use strict;
my %dict = ();
my $inc = 1;
while (<>) {
chomp;
if (/^\s*#define\s+(\w+)\s*(.*)$/) {
$dict{$1} = $2;
next;
}
if (/^\s*#ifdef\s+(\w+)\s*$/) {
$inc = 0 unless defined $dict{$1};
next;
}
if (/^\s*#ifndef\s+(\w+)\s*$/) {
$inc = 0 if defined $dict{$1};
next;
}
if (/^\s*#else\s*$/) {
$inc = ($inc ? 0 : 1);
next;
}
if (/^\s*#endif\s*$/) {
$inc = 1;
next;
}
if (/^\s*#undef\s+(\w+)\s*$/) {
undef $dict{$1}
next;
}
next unless $inc;
while (my ($m, $v) = each %dict) {
$_ =~ s/$m/$v/g;
}
print $_, "\n";
}
No comments:
Post a Comment