#!/usr/bin/perl -n BEGIN { while (@ARGV && $ARGV[$#ARGV] =~ m/^\-/) { $_= pop; if (m/^-M$/) { $manglout= 1; } elsif (m/^-I(\S+),(\S+)$/) { $mapinclude{$1}= $2; } else { die "$_ ?"; } } } $l= $_; $pfx= 'pan_'; $pcode= ''; sub endsection () { return unless defined $codesection; print(";{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{\n", $codesection, ";}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}\n") or die $! unless $manglout; undef $codesection; } sub mangle ($) { print ";#MANGLE# $1\n" or die $! if $manglout; } if (m/^(\w*)\s+code\b/) { endsection(); $codesection= "$pfx$_"; } elsif (m/^\s+(?:include|end|udata(?:_acs)?)\b/) { endsection(); } elsif (m/^(\w+)\s+macro\b/) { $inmacro++; } elsif (m/^\w*\s+endm\b/) { $inmacro--; } elsif (m/^(\w*)\s+(?:equ)\b/) { } elsif (m/^\s+extern\s+(\w+)\b/) { mangle($1); print " extern $pfx$1;##\n" or die $! unless $manglout; } elsif (!$inmacro && defined $codesection) { if (!s/^\;/;\#\#/) { mangle($1) if m/^(\w+)\b/; s/\b(\w+)\b/ $mangle{$1} ? "$pfx$1" : $1 /ge; } $codesection .= $_ unless m/\;\!P\s*$/; } elsif (m/^\;\#MANGLE\# (\w+)$/) { $mangle{$1}= 1; $l= ''; } if (m/^\s+include\s+(\S+)\s+$/ && exists $mapinclude{$1}) { $l= " include $mapinclude{$1}\n"; } print $l or die $! unless $manglout;