<commit_before>Status : Experimental
=====================

Description
===========

A finite state machine modeling Moore insofar as is practical.

A rough translation of the formalism is provided:
FSM = (Σ,Γ,S,i,δ,ω)
where
Σ is the alphabet, modeled by IEvent#name
Γ is the output alphabet, modeled by any IEvent produced from within FSM (via ω)
S is the set of states, modeled by IFsm#states and IState
i is the initial state, modeled by IFsm#init
δ is the the state transition function, modeled by ITransition
ω is the output function S⟶Γ, modeled by a certain interaction of IAction and
the Fsm implementation. This (i.e. ⟶) boils down to the executeAction calls in
Fsm when a transition is found. Put another way, ω is not an AS3 function, nor
is it a class or interface, but rather it is an abstraction, specified in AS3 by
the steps allowing an IAction (accepting an IFsm) to call IFsm#pushEvent

Not included in the formalism is guarded transitions allowing multiple IEvents
to be mapped to a single IState. A runtime exception is thrown if it becomes
possible to transit out of a state into more than 1 state.<commit_msg>Update src/com/phylake/fsm/readme.md<commit_after>Status : Experimental
=====================

Description
===========

A finite state machine modeling Moore insofar as is practical.

A rough translation of the formalism is provided:
FSM = (Σ,Γ,S,i,δ,ω)
where
- Σ is the alphabet, modeled by IEvent#name
- Γ is the output alphabet, modeled by any IEvent produced from within FSM (via ω)
- S is the set of states, modeled by IFsm#states and IState
- i is the initial state, modeled by IFsm#init
- δ is the the state transition function, modeled by ITransition
- ω is the output function S⟶Γ, modeled by a certain interaction of IAction and
the Fsm implementation. This (i.e. ⟶) boils down to the executeAction calls in
Fsm when a transition is found. Put another way, ω is not an AS3 function, nor
is it a class or interface, but rather it is an abstraction, specified in AS3 by
the steps allowing an IAction (accepting an IFsm) to call IFsm#pushEvent

Not included in the formalism is guarded transitions allowing multiple IEvents
to be mapped to a single IState. A runtime exception is thrown if it becomes
possible to transit out of a state into more than 1 state.
{'fraction_non_alphanumeric': 0.06922072268175881, 'fraction_numerical': 0.00261210274270788, 'mean_word_length': 4.5641646489104115, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 3, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '3195868', 'n_tokens_mistral': 655, 'n_tokens_neox': 612, 'n_words': 366}