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