+++ /dev/null
-#! /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;
-}