]> granicus.if.org Git - re2c/commitdiff
Adding cleanup.pl script from yasm.
authornuffer <nuffer@642ea486-5414-0410-9d7f-a0204ed87703>
Mon, 12 Jan 2004 04:36:46 +0000 (04:36 +0000)
committernuffer <nuffer@642ea486-5414-0410-9d7f-a0204ed87703>
Mon, 12 Jan 2004 04:36:46 +0000 (04:36 +0000)
cleanup.pl [new file with mode: 0644]

diff --git a/cleanup.pl b/cleanup.pl
new file mode 100644 (file)
index 0000000..928783a
--- /dev/null
@@ -0,0 +1,32 @@
+#! /usr/bin/env perl
+my @sourcelines = <>;
+my %usedlabel;
+my %usedvar;
+my $lastusedvarline = 0;
+my $level = 0;
+my $line = 1;
+for (@sourcelines) {
+    $usedlabel{"$1:"} = "$1:" if m/goto\s+(yy[0-9]*)\s*;/;
+    $level = $level + 1 if m/\{/;
+    $level = $level - 1 if m/\}/;
+    if ($level < $usedvar{$lastusedvarline}) {
+       $lastusedvarline = 0;
+    }
+    if (m/int\s+yyaccept/) {
+       $usedvar{$line} = $level;
+       $lastusedvarline = $line;
+    } elsif (m/yyaccept/) {
+       $usedvar{$lastusedvarline} = 1000;
+    }
+    $line = $line + 1;
+}
+$line = 1;
+for (@sourcelines) {
+    s/^(yy[0-9]*:)/$usedlabel{$1}/;
+    if ($usedvar{$line} != 0 && $usedvar{$line} != 1000) {
+       print "\n";
+    } else {
+       print;
+    }
+    $line = $line + 1;
+}