package FLAT::Transition;
use strict;
use Carp;
sub new {
my ($pkg, @things) = @_;
bless { map { $_ => 1 } @things }, $pkg;
}
sub does {
my ($self, @things) = @_;
return 1 if @things == 0;
return !! grep $self->{$_}, @things;
}
sub add {
my ($self, @things) = @_;
@$self{@things} = (1) x @things;
}
sub delete {
my ($self, @things) = @_;
delete $self->{$_} for @things;
}
sub alphabet {
my $self = shift;
sort { $a cmp $b } keys %$self;
}
sub as_string {
my $self = shift;
join ",", map { length $_ ? $_ : "epsilon" } $self->alphabet;
}
1;
__END__
=head1 NAME
FLAT::Transition - a transition base class.
=head1 SYNOPSIS
Default implementation of the Transition class, used to manage transitions
from one state to others. This class is meant for internal use.
=head1 USAGE
used internally;
=head1 AUTHORS & ACKNOWLEDGEMENTS
FLAT is written by Mike Rosulek E<lt>mike at mikero dot comE<gt> and
Brett Estrade E<lt>estradb at gmail dot comE<gt>.
The initial version (FLAT::Legacy) by Brett Estrade was work towards an
MS thesis at the University of Southern Mississippi.
Please visit the Wiki at http://www.0x743.com/flat
=head1 LICENSE
This module is free software; you can redistribute it and/or modify it under
the same terms as Perl itself.