14a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 24a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Projectuse Getopt::Long; 34a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 44a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project$rc = GetOptions("pht=s" => \$phtfile, 54a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project "i=s" => \$oklongfile, 64a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project "ok=s" => \$okfile); 74a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 84a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Projectload_phtfile($phtfile) if(defined $phtfile); 94a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 104a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Projectsub load_phtfile 114a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project{ 124a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project my $phtfile = shift(@_); 134a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project open(PHT, "<$phtfile") || die "error opening phtfile $phtfile\n"; 144a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project print STDERR "using phtfile $phtfile\n"; 154a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project <PHT>; # header 164a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project while(<PHT>) { 174a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project s/\s+$//g; 184a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project ($trash,$lph,$sph,$num_states) = split(/\s+/); 194a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project $lph_for_sph{$sph} = $lph; 204a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project $sph_for_lph{$lph} = $sph; 214a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project $lphhash{$lph}++; 224a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project } 234a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project close(PHT); 244a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project $sph = $lph = "&"; 254a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project $lph_for_sph{$sph} = $lph; 264a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project $sph_for_lph{$lph} = $sph; 274a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project $lphhash{$lph}++; 284a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project $sph = "#"; $lph = "iwt"; 294a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project $lph_for_sph{$sph} = $lph; 304a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project $sph_for_lph{$lph} = $sph; 314a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project $lphhash{$lph}++; 324a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project} 334a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 344a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Projectopen(HH, "<$oklongfile") || die "error opening okfile $oklongfile\n"; 354a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Projectopen(OO, ">$okfile") || die "error opening output dict $okfile\n"; 364a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Projectwhile(<HH>) { 374a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project s/\s+$//; 384a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project if(/^LANG\s*=\s*(\S+)/) { # LANG = EN-US 394a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project my $language = lc($1); 404a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project my $language_header_line = $_; 414a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project $language =~ s/\-/\./g; 424a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project if(!defined $phtfile) { 434a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project die "Error: ESRSDK is not defined\n" if(!defined $ENV{ESRSDK}); 444a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project $phtfile = "$ENV{ESRSDK}/config/$language/models/generic.pht"; 454a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project load_phtfile( $phtfile); 464a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project } 474a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project print OO "$language_header_line\n"; 484a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project next; 494a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project } 504a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project s/\s+$//; 514a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project s/^\s+//; 524a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project if(/\#\#/) { 534a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project next if($skip_funnies); 544a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project s/\#\#.*$//; 554a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project } 564a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project ($word, $pron) = split(/\s*\t\s*/, $_, 2); 574a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 584a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project @lphlist = split(/\s+/, $pron); 594a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project @sphlist = (); 604a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project foreach $lph (@lphlist) { 614a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project die "error: unknown lph $lph in $word\n" if(!defined $sph_for_lph{$lph}); 624a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project push(@sphlist, $sph_for_lph{$lph}); 634a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project } 644a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project $sphPron = join("",@sphlist); 654a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project print OO "$word $sphPron\n"; 664a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project} 674a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 684a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Projectclose(HH); 694a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Projectclose(OO); 704a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 71