#!/usr/bin/perl
## sil2sp
## by Kyle Gorman (kgorman@ling.upenn.edu)
## Idiosyncratic Perl script for generating states for sp (to later be tied
## to sil).
## TODO: make more general. Currently just works for a small set of situations
use strict;

my $seenSil = 0;
my $seenState3 = 0;

my @lines = <>;
my @endLines;
for (my $i = 0; $i < @lines; $i++) {
if ($lines[$i] =~ /sil/) {
if ($lines[$i+9] =~ / 3/) {
push(@endLines," 2\n");
push(@endLines,$lines[$i+10]);
push(@endLines,$lines[$i+11]);
push(@endLines,$lines[$i+12]);
push(@endLines,$lines[$i+13]);
push(@endLines,$lines[$i+14]);
# header
push(@endLines," 3\n");
# 1
my @split0 = split(/\s+/,$lines[$i+22]);
push(@endLines," ");
push(@endLines,@split0[0] . " ");
push(@endLines,@split0[1] . " ");
push(@endLines,@split0[2] . " ");
push(@endLines,@split0[3] . "\n");
# 2
my @split1 = split(/\s+/,$lines[$i+23]);
push(@endLines," ");
push(@endLines,@split1[0] . " ");
push(@endLines,@split1[1] . " ");
push(@endLines,@split1[2] . " ");
push(@endLines,@split1[3] . "\n");
# 3
my @split2 = split(/\s+/,$lines[$i+24]);
push(@endLines," ");
push(@endLines,@split2[0] . " ");
push(@endLines,@split2[1] . " ");
push(@endLines,@split2[2] . " ");
push(@endLines,@split2[3] . "\n");
}
}
print $lines[$i];
}
print "~h \"sp\"\n\n 3\n";
foreach my $output (@endLines) {
print $output;
}
print "\n";