| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| |
|
| | use warnings; |
| | use strict; |
| |
|
| | my $errs = 0; |
| | sub err { |
| | my $nr = shift; |
| | my $msg = shift; |
| | print STDERR "$nr:$msg\n"; |
| | $errs++; |
| | } |
| |
|
| | my $onr = 0; |
| | my @lines = (); |
| | sub flush { |
| | return if 0 == scalar @lines; |
| | print join(" ", @lines); |
| | print "\n"; |
| | $onr++; |
| | @lines = (); |
| | } |
| |
|
| | my $nr = 0; |
| | my $numscores = undef; |
| | while (<>) { |
| | chomp; |
| | if ($_ eq "") { |
| | flush(); |
| | next; |
| | } |
| | my ($a, $b, $label, $scores, $rest) = split /\s+/, $_, 5; |
| | err($nr, "The delimiter '|||' can't appear in the input!") if /\|\|\|/; |
| | err($nr, "Node id not numeric: $a") if $a !~ /^\d+$/; |
| | err($nr, "Node id not numeric: $b") if $b !~ /^\d+$/; |
| | err($nr, "Unexpected tail: '$rest'") if defined $rest && $rest !~ /^\s*$/; |
| | my $thisnumscores = ($scores =~ tr/,/,/); |
| | $numscores = $thisnumscores if !defined $numscores; |
| | err($nr, "Incompatible number of arc scores, previous lines had ".($numscores+1).", now ".($thisnumscores+1)) |
| | if $numscores != $thisnumscores; |
| | push @lines, join("|||", ($a,$b,$label,$scores)); |
| | } |
| | flush(); |
| |
|
| | exit 1 if $errs; |
| |
|