The London Perl and Raku Workshop takes place on 26th Oct 2024. If your company depends on Perl, please consider sponsoring and/or attending.

NAME

Gfsm::Automaton::Indexed - libgfsm finite-state automata, indexed

SYNOPSIS

 use Gfsm;

 ##------------------------------------------------------------
 ## Constructors, etc.

 $xfsm = Gfsm::Automaton::Indexed->new();
 $xfsm = Gfsm::Automaton::Indexed->new($is_transducer,$srtype,$n_states,$n_arcs);

 $xfsm2 = $xfsm->clone();     # copy constructor
 $xfsm2->assign($xfsm1);      # assigns $fsm1 to $fsm2

 $xfsm->clear();              # clear automaton structure


 ##--------------------------------------------------------------
 ## Import & Export

 $fsm  = $xfsm->to_automaton();   # convert Gfsm::Automaton::Indexed -> Gfsm::Automaton
 $xfsm = $fsm->to_indexed();      # convert Gfsm::Automaton -> Gfsm::Automaton::Indexed


 ##------------------------------------------------------------
 ## Accessors/Manipulators: Properties

 $bool = $xfsm->is_transducer();           # get 'is_transducer' flag
 $bool = $xfsm->is_transducer($bool);      # ... or set it

 $bool = $xfsm->is_weighted(?$bool);       # get/set 'is_weighted' flag
 $mode = $xfsm->sort_mode(?$mode);         # get/set sort-mode flag (dangerous)
 $bool = $xfsm->is_deterministic(?$bool);  # get/set 'is_deterministic' flag (dangerous)
 $srtype = $xfsm->semiring_type(?$srtype); # get/set semiring type

 $n = $xfsm->n_states();                   # get number of states
 $n = $xfsm->n_arcs();                     # get number of arcs

 $id   = $xfsm->root(?$id);                # get/set id of initial state
 $bool = $xfsm->has_state($id);            # check whether a state exists


 ##------------------------------------------------------------
 ## Accessors/Manipulators: States

 $id = $xfsm->add_state();                 # add a new state
 $id = $xfsm->ensure_state($id);           # ensure that a state exists

 $xfsm->remove_state($id);                 # remove a state from an FSM (currently does nothing)

 $bool = $xfsm->is_final($id,?$bool);      # get/set final-flag for state $id

 $deg  = $xfsm->out_degree($id);           # get number of outgoing arcs for state $id

 $w    = $xfsm->final_weight($id,?$w);     # get/set final weight for state $id


 ##------------------------------------------------------------
 ## Accessors/Manipulators: Arcs

 $fsm->arcsort($fsm,$mode);               # sort automaton arcs

 ##-- TODO: arc range iterator access!


 ##--------------------------------------------------------------
 ## I/O

 $bool = $xfsm->load($filename_or_handle);   # load binary file
 $bool = $xfsm->save($filename_or_handle);   # save binary file

 $bool = $xfsm->load_string($buffer);        # load from in-memory buffer $string
 $bool = $xfsm->save_string($buffer);        # save to in-memory buffer $string

 $bool = $xfsm->viewps(%options);            # for debugging (uses to_automaton())

DESCRIPTION

Not yet written.

BUGS AND LIMITATIONS

Probably many.

SEE ALSO

Gfsm(3perl), Gfsm::Automaton(3perl), gfsmutils(1).

AUTHOR

Bryan Jurish <moocow@cpan.org>

COPYRIGHT AND LICENSE

Copyright (C) 2005-2008 by Bryan Jurish

This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself, either Perl version 5.14.2 or, at your option, any later version of Perl 5 you may have available.