| |
| |
| |
| |
| |
| |
| |
|
|
| use warnings; |
| use strict; |
| use File::Path; |
| use File::Basename; |
| use File::Copy; |
| use Getopt::Long; |
|
|
| my $organize_to_stacks = 0; |
| GetOptions( |
| "organize-to-stacks" => \$organize_to_stacks, |
| ) or exit 1; |
|
|
| my %stacks = (); |
| $stacks{0}{0} = 0; |
|
|
| print STDOUT "digraph searchgraph\n{\nrankdir=LR\n"; |
|
|
|
|
| my($line, $cpt, $from, $to, $label, $recombined, $transition, $o, $stack, $state); |
| $cpt = 0; |
|
|
| $line=<>; |
|
|
| my $nr = 0; |
| while(($line=<>) ) |
| { |
| $nr++; |
| $from = ""; |
| $to = ""; |
| $label = ""; |
| $recombined = ""; |
| chomp($line); |
| |
|
|
| |
| |
| |
| |
|
|
| if($line =~ /hyp=(\d+).+stack=(\d+).+back=(\d+).+transition=([^ ]*).+recombined=(\d+).+out=(.*)(, pC|$)/) |
| { |
| |
| $to = $1; |
| $stack = $2; |
| $from = $3; |
| $transition=$4; |
| $recombined = $5; |
| $o = $6; |
| $label = "[color=blue label="; |
|
|
| $to = $recombined; |
| $stacks{$stack}{$recombined} = $recombined if $organize_to_stacks; |
| |
| |
| } |
| elsif($line =~ /hyp=(\d+).+stack=(\d+).+back=(\d+).+transition=([^ ]*).+out=(.*)(, pC|$)/) |
| { |
| |
| $to = $1; |
| $stack = $2; |
| $from = $3; |
| $transition=$4; |
| $o = $5; |
| $label = "[label="; |
| $stacks{$stack}{$to} = $to if $organize_to_stacks; |
| |
| |
| } |
| else{ |
| die "$nr:Bad line: $line\n"; |
| } |
|
|
| $o =~ s/\"/\\"/g ; |
| |
| $label .= "\"$o p=$transition\"]\n"; |
| |
|
|
| print STDOUT "$from -> $to $label"; |
|
|
| $cpt++; |
| } |
|
|
| if ($organize_to_stacks) { |
| foreach $stack (sort (keys(%stacks))) |
| { |
| print STDOUT "{ rank=same; "; |
| foreach $state (sort keys %{ $stacks{$stack} } ) |
| { |
| print STDOUT "$stacks{$stack}{$state} "; |
| } |
| print STDOUT "}\n"; |
| } |
| } |
|
|
| print STDOUT "\n}\n"; |
|
|
| print STDERR "Converted $nr lines.\n"; |
|
|