Initialisation du repository de Beta
This commit is contained in:
commit
14985f6dbb
9469 changed files with 1903273 additions and 0 deletions
|
|
@ -0,0 +1,60 @@
|
|||
class State:
|
||||
'''
|
||||
A representation of a state managed by a ``StateMachine``.
|
||||
|
||||
Attributes:
|
||||
name (instance of FreeGroupElement or string) -- State name which is also assigned to the Machine.
|
||||
transisitons (OrderedDict) -- Represents all the transitions of the state object.
|
||||
state_type (string) -- Denotes the type (accept/start/dead) of the state.
|
||||
rh_rule (instance of FreeGroupElement) -- right hand rule for dead state.
|
||||
state_machine (instance of StateMachine object) -- The finite state machine that the state belongs to.
|
||||
'''
|
||||
|
||||
def __init__(self, name, state_machine, state_type=None, rh_rule=None):
|
||||
self.name = name
|
||||
self.transitions = {}
|
||||
self.state_machine = state_machine
|
||||
self.state_type = state_type[0]
|
||||
self.rh_rule = rh_rule
|
||||
|
||||
def add_transition(self, letter, state):
|
||||
'''
|
||||
Add a transition from the current state to a new state.
|
||||
|
||||
Keyword Arguments:
|
||||
letter -- The alphabet element the current state reads to make the state transition.
|
||||
state -- This will be an instance of the State object which represents a new state after in the transition after the alphabet is read.
|
||||
|
||||
'''
|
||||
self.transitions[letter] = state
|
||||
|
||||
class StateMachine:
|
||||
'''
|
||||
Representation of a finite state machine the manages the states and the transitions of the automaton.
|
||||
|
||||
Attributes:
|
||||
states (dictionary) -- Collection of all registered `State` objects.
|
||||
name (str) -- Name of the state machine.
|
||||
'''
|
||||
|
||||
def __init__(self, name, automaton_alphabet):
|
||||
self.name = name
|
||||
self.automaton_alphabet = automaton_alphabet
|
||||
self.states = {} # Contains all the states in the machine.
|
||||
self.add_state('start', state_type='s')
|
||||
|
||||
def add_state(self, state_name, state_type=None, rh_rule=None):
|
||||
'''
|
||||
Instantiate a state object and stores it in the 'states' dictionary.
|
||||
|
||||
Arguments:
|
||||
state_name (instance of FreeGroupElement or string) -- name of the new states.
|
||||
state_type (string) -- Denotes the type (accept/start/dead) of the state added.
|
||||
rh_rule (instance of FreeGroupElement) -- right hand rule for dead state.
|
||||
|
||||
'''
|
||||
new_state = State(state_name, self, state_type, rh_rule)
|
||||
self.states[state_name] = new_state
|
||||
|
||||
def __repr__(self):
|
||||
return "%s" % (self.name)
|
||||
Loading…
Add table
Add a link
Reference in a new issue