The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

NAME

XML::DTD::Automaton - Perl module representing a finite automaton

SYNOPSIS

  use XML::DTD::Automaton;

  my $fsa = XML::DTD::Automaton->new;
  my $idxa = $fsa->mkstate('state label A');
  my $idxb = $fsa->mkstate('state label B');
  $fsa->mktrans($idxa, $idxb, 'transition symbol');

ABSTRACT

  XML::DTD::Automaton is a Perl module representing a finite automaton.

DESCRIPTION

  XML::DTD::Automaton is a Perl module representing a finite
  automaton. The following methods are provided.
new
 my $fsa = XML::DTD::Automaton->new;

Construct a new XML::DTD::Automaton object

isa
  if (XML::DTD::Automaton->isa($atd)) {
  ...
  }

Test object type

state
 my $idx = $fsa->mkstate('state label');
 my $state = $fsa->state($idx);

Get an XML::DTD::FAState object reference from a state index

index
 my $state = $fsa->state($idx0);
 ...
 my $idx1 = $fsa->index($state);

Get a state index from an XML::DTD::FAState object reference

final
 my $flg = $fsa->final($idx);

Determine whether a state is marked final

setfinal
 $fsa->setfinal($idx);

Mark a state as final

mkstate
 my $idxa = $fsa->mkstate('state label A');
 my $idxb = $fsa->mkstate('state label B', 1); # A final state

Construct a new state

mktrans
 $fsa->mktrans($idxa, $idxb, 'transition symbol');
 $fsa->mktrans($idxa, $idxb, ''); # An epsilon transition

Construct a new transition

rmtrans
 $fsa->rmtrans($idxa, $idxb, 'transition symbol');

Remove a transition

epselim
 $fsa->epselim;

Eliminate epsilon transitions

rmunreach
 $fsa->rmunreach;

Remove unreachable states

isdeterministic
 if ($fsa->isdeterministic) {
 ...
 }

Determine with the automaton is deterministic

accept
 if ($fsa->accept(['a', 'a', 'b', 'c', 'a'])) {
 ...
 }

If the automaton is deterministic, determine whether the symbol sequence is accepted

string
 print $fsa->string;

Construct a string representation of the automaton

writexml
  $xo = new XML::Output({'fh' => *STDOUT});
  $fsa->writexml($xo);

Write an XML representation of the automaton

SEE ALSO

XML::DTD::FAState

AUTHOR

Brendt Wohlberg <wohl@cpan.org>

COPYRIGHT AND LICENSE

Copyright (C) 2006,2010 by Brendt Wohlberg

This library is available under the terms of the GNU General Public License (GPL), described in the GPL file included in this distribution.