From: <per...@li...> - 2006-05-24 05:53:53
|
Revision: 67 Author: estrabd Date: 2006-05-23 22:53:43 -0700 (Tue, 23 May 2006) ViewCVS: http://svn.sourceforge.net/perl-flat/?rev=67&view=rev Log Message: ----------- made some adjustments - not there yet Modified Paths: -------------- trunk/perl-flat/dev-scripts/pregex-to-pfa.pl trunk/perl-flat/lib/FLAT/PFA.pm Modified: trunk/perl-flat/dev-scripts/pregex-to-pfa.pl =================================================================== --- trunk/perl-flat/dev-scripts/pregex-to-pfa.pl 2006-05-05 18:55:09 UTC (rev 66) +++ trunk/perl-flat/dev-scripts/pregex-to-pfa.pl 2006-05-24 05:53:43 UTC (rev 67) @@ -8,8 +8,17 @@ # This is mainly my test script for FLAT::FA::PFA.pm -my $PRE = FLAT::Regex::WithExtraOps->new('(a&b&c)*([cat]&[dog])'); +my $PRE = FLAT::Regex::WithExtraOps->new($ARGV[0]); my $PFA = $PRE->as_pfa(); -print Dumper($PFA); +my $dot = $PFA->as_graphviz; +my $summary = $PFA->as_summary; + +print "$summary\n"; + +open my $fh, "|-", "dot -Tpng -o output.png" + or die "Couldn't run dot: $!\n"; + +print $fh $dot; +close $fh; Modified: trunk/perl-flat/lib/FLAT/PFA.pm =================================================================== --- trunk/perl-flat/lib/FLAT/PFA.pm 2006-05-05 18:55:09 UTC (rev 66) +++ trunk/perl-flat/lib/FLAT/PFA.pm 2006-05-24 05:53:43 UTC (rev 67) @@ -47,6 +47,8 @@ # attack of the clones sub as_pfa { $_[0]->clone() } +# +sub as_nfa { $_[0]->clone() } # set lambda symbol - temp fix for larger problem of special symbols # like epsilon and lambda @@ -62,23 +64,18 @@ } # will implement the joining of two PFAs with lambda transitions +# BUG - need to fix sub shuffle { my @pfas = map { $_->as_pfa } @_; + my $result = $pfas[0]->clone; - $result->_swallow($_) for @pfas[1 .. $#pfas]; - my ($newstart, $newfinal) = $result->add_states(2); - my @starting = $result->get_starting; - my @accepting = $result->get_accepting; - $result->unset_starting(@starting); - $result->unset_accepting(@accepting); - $result->set_starting($newstart); - $result->set_accepting($newfinal); - foreach (@starting) { - $result->set_transition($newstart,$_,$result->get_lambda()); + my @newstate = ([ $result->get_states ]); + my @start = $result->get_starting; + + for (1 .. $#pfas) { + push @newstate, [ $result->_swallow( $pfas[$_] ) ]; } - foreach (@accepting) { - $result->set_transition($_,$newfinal,$result->get_lambda()); - } + return $result; } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |