strip.pl 501 B

12345678910111213141516171819202122232425262728293031
  1. #!/usr/bin/perl
  2. my $multicomment=0;
  3. while (<>) {
  4. chomp;
  5. if (!$multicomment) {
  6. s|//.*$| |g;
  7. s|/\*.*?\*/| |g;
  8. if (m|/\*|) {
  9. s|/\*.*$| |g;
  10. $multicomment=1;
  11. }
  12. } elsif (m|\*/|) {
  13. s|^.*?\*/| |g;
  14. $multicomment=0;
  15. } else {
  16. $_='';
  17. }
  18. s|^\s+||g;
  19. s|\s+$||g;
  20. s|\s+| |g;
  21. s|^(\#define \w+) |\1\t|g;
  22. s|(\W) (.)|\1\2|g;
  23. s|(.) (\W)|\1\2|g;
  24. s:(?<!\w)0x([A-Fa-f0-9]{1,5})(?!(\#|\d)):hex($1):ge;
  25. while (s:(?<!\w)(\d+)\*(\d+)(?!(\#|\d)):$1*$2:ge) {}
  26. s|\t| |g;
  27. $_.="\n" if $_;
  28. print;
  29. }