comex wrote:
>Anyone have the script for FLR-->SLR?
Attached.
-zefram
#!/usr/bin/perl
use warnings;
use strict;
use IO::Handle;
{
my $peeked_line;
sub peekline() {
unless(defined $peeked_line) {
local $/ = "\n";
$peeked_line = STDIN->getline;
die "hit EOF unexpectedly" unless defined $peeked_line;
die "incomplete line" unless $peeked_line =~ /\n\z/;
}
return $peeked_line;
}
sub getline() {
my $line = peekline();
$peeked_line = undef;
return $line;
}
}
getline eq "THE FULL LOGICAL RULESET\n" or die;
print "THE SHORT LOGICAL RULESET\n";
until(peekline =~ /\A---/) {
print getline;
}
getline until peekline =~ /\A===/;
CATEGORY: while(1) {
print getline, getline;
getline until peekline =~ /\A---/;
print getline;
while(1) {
die unless getline eq "\n";
if(peekline =~ /\A===/) {
print "\n";
next CATEGORY;
}
last CATEGORY unless peekline =~
m#\ARule (\d+)/(\d+) \(Power=(\d(?:\.\d+)?)\)\n\z#;
print "\n", getline, getline;
die unless getline eq "\n";
my $had_any_text = 0;
my $had_non_text = 0;
while(1) {
last if peekline =~ /\A---/;
my $para = "";
$para .= getline while peekline ne "\n";
getline;
if($para =~ /\A /) {
die if $had_non_text;
$had_any_text = 1;
print "\n", $para;
} elsif($para =~ /\ACFJ /) {
$had_non_text = 1;
print "\n", $para;
} elsif($para =~ /\A\[|\AHistory:/) {
$had_non_text = 1;
} else {
die;
}
}
die unless $had_any_text;
print "\n", getline;
}
}
die unless peekline eq "END OF THE FULL LOGICAL RULESET\n";
print "\nEND OF THE SHORT LOGICAL RULESET\n";
die if defined STDIN->getline;
exit 0;