Line | |
---|
1 | #!/usr/bin/perl |
---|
2 | |
---|
3 | my $currstate=-1; |
---|
4 | my @states; |
---|
5 | my @final; |
---|
6 | my $tn=0; |
---|
7 | |
---|
8 | while(<>) |
---|
9 | { |
---|
10 | if(/^\s*([0-9]+)\s+([0-9]+)\s+(.)(\s*)?$/) |
---|
11 | { |
---|
12 | push @{$states[$1]}, ($3, $2); |
---|
13 | $#states=$2 if $#states<$2; |
---|
14 | $tn++; |
---|
15 | } |
---|
16 | elsif(/^\s*([0-9]+)\s*$/) |
---|
17 | { |
---|
18 | $final[$1]=1; |
---|
19 | $#states=$1 if $#states<$1; |
---|
20 | } |
---|
21 | else |
---|
22 | { |
---|
23 | die("Input error."); |
---|
24 | } |
---|
25 | } |
---|
26 | |
---|
27 | print scalar(@states)," ",$tn," char void\n"; |
---|
28 | |
---|
29 | my $i=0; |
---|
30 | my $width=int(log(@states+1)/log(10)); |
---|
31 | foreach $stateref (@states) |
---|
32 | { |
---|
33 | $f = ($final[$i]?"+":"-"); |
---|
34 | printf "%${width}d %s",$i++,$f; |
---|
35 | while(@$stateref) |
---|
36 | { |
---|
37 | $c=shift @$stateref; |
---|
38 | $s=shift @$stateref; |
---|
39 | print " $c $s"; |
---|
40 | } |
---|
41 | print "\n"; |
---|
42 | } |
---|
43 | |
---|
44 | |
---|
Note: See
TracBrowser
for help on using the repository browser.