Search/Lucene/FSM.php
Zend Framework
LICENSE
This source file is subject to the new BSD license that is bundled
with this package in the file LICENSE.txt.
It is also available through the world-wide-web at this URL:
http://framework.zend.com/license/new-bsd
If you did not receive a copy of the license and are unable to
obtain it through the world-wide-web, please send an email
to license@zend.com so we can send you a copy immediately.
- Category
- Zend
- Copyright
- Copyright (c) 2005-2014 Zend Technologies USA Inc. (http://www.zend.com)
- License
- New BSD License
- Package
- Zend_Search_Lucene
- Version
- $Id$
\Zend_Search_Lucene_FSM
Package: Zend_Search_Lucene
















Throws
Abstract Finite State Machine
Take a look on Wikipedia state machine description: http://en.wikipedia.org/wiki/Finite_state_machine
Any type of Transducers (Moore machine or Mealy machine) also may be implemented by using this abstract FSM.
process() methods invokes a specified actions which may construct FSM output.
Actions may be also used to signal, that we have reached Accept State
- Children
- \Zend_Search_Lucene_Search_QueryLexer
- \Zend_Search_Lucene_Search_BooleanExpressionRecognizer
- \Zend_Search_Lucene_Search_QueryParser
- Category
- Zend
- Copyright
- Copyright (c) 2005-2014 Zend Technologies USA Inc. (http://www.zend.com)
- License
- New BSD License
Properties

array $_entryActions = array()List of entry actions
Each action executes when entering the state
[state] => action
Default valuearray()Details- Type
- array

array $_exitActions = array()List of exit actions
Each action executes when exiting the state
[state] => action
Default valuearray()Details- Type
- array

array $_inputActions = array()List of input actions
Each action executes when entering the state
[state][input] => action
Default valuearray()Details- Type
- array

array $_rules = array()State transition table
[sourceState][input] => targetState
Default valuearray()Details- Type
- array
Methods

__construct(array $states = array(), array $inputAphabet = array(), array $rules = array()) : voidFinite State machine constructor
$states is an array of integers or strings with a list of possible machine states
constructor treats fist list element as a sturt state (assignes it to $_current state).
It may be reassigned by setState() call.
States list may be empty and can be extended later by addState() or addStates() calls.
$inputAphabet is the same as $states, but represents input alphabet
it also may be extended later by addInputSymbols() or addInputSymbol() calls.
$rules parameter describes FSM transitions and has a structure:
array( array(sourseState, input, targetState[, inputAction]),
array(sourseState, input, targetState[, inputAction]),
array(sourseState, input, targetState[, inputAction]),
...
)
Rules also can be added later by addRules() and addRule() calls.
FSM actions are very flexible and may be defined by addEntryAction(), addExitAction(),
addInputAction() and addTransitionAction() calls.
Parameters| Name | Type | Description |
|---|---|---|
| $states | array | |
| $inputAphabet | array | |
| $rules | array |

addEntryAction(integer | string $state, \Zend_Search_Lucene_FSMAction $action) : voidAdd state entry action.
Several entry actions are allowed.
Action execution order is defined by addEntryAction() calls
Parameters| Name | Type | Description |
|---|---|---|
| $state | integer | string | |
| $action | \Zend_Search_Lucene_FSMAction |

addExitAction(integer | string $state, \Zend_Search_Lucene_FSMAction $action) : voidAdd state exit action.
Several exit actions are allowed.
Action execution order is defined by addEntryAction() calls
Parameters| Name | Type | Description |
|---|---|---|
| $state | integer | string | |
| $action | \Zend_Search_Lucene_FSMAction |

addInputAction(integer | string $state, $inputSymbol, \Zend_Search_Lucene_FSMAction $action) : voidAdd input action (defined by {state, input} pair).
Several input actions are allowed.
Action execution order is defined by addInputAction() calls
Parameters| Name | Type | Description |
|---|---|---|
| $state | integer | string | |
| $inputSymbol | ||
| $action | \Zend_Search_Lucene_FSMAction |

addInputSymbol(integer | string $inputSymbol) : voidAdd symbol to the input alphabet
Parameters
| Name | Type | Description |
|---|---|---|
| $inputSymbol | integer | string |

addInputSymbols(array $inputAphabet) : voidAdd symbols to the input alphabet
Parameters
| Name | Type | Description |
|---|---|---|
| $inputAphabet | array |

addRule(integer | string $sourceState, integer | string $input, integer | string $targetState, \Zend_Search_Lucene_FSMAction | null $inputAction = null) : voidAdd symbol to the input alphabet
Parameters
Throws
| Name | Type | Description |
|---|---|---|
| $sourceState | integer | string | |
| $input | integer | string | |
| $targetState | integer | string | |
| $inputAction | \Zend_Search_Lucene_FSMAction | null |
| Exception | Description |
|---|---|
| \Zend_Search_Exception |

addRules(array $rules) : voidAdd transition rules
array structure:
array( array(sourseState, input, targetState[, inputAction]),
array(sourseState, input, targetState[, inputAction]),
array(sourseState, input, targetState[, inputAction]),
...
)
Parameters| Name | Type | Description |
|---|---|---|
| $rules | array |

addState(integer | string $state) : voidAdd state to the state machine
Parameters
| Name | Type | Description |
|---|---|---|
| $state | integer | string |

addStates(array $states) : voidAdd states to the state machine
Parameters
| Name | Type | Description |
|---|---|---|
| $states | array |

addTransitionAction(integer | string $sourceState, integer | string $targetState, \Zend_Search_Lucene_FSMAction $action) : voidAdd transition action (defined by {state, input} pair).
Several transition actions are allowed.
Action execution order is defined by addTransitionAction() calls
Parameters| Name | Type | Description |
|---|---|---|
| $sourceState | integer | string | |
| $targetState | integer | string | |
| $action | \Zend_Search_Lucene_FSMAction |

process(mixed $input) : voidProcess an input
Parameters
Throws
| Name | Type | Description |
|---|---|---|
| $input | mixed |
| Exception | Description |
|---|---|
| \Zend_Search_Exception |

setState(integer | string $state) : voidSet FSM state.
No any action is invoked
Parameters| Name | Type | Description |
|---|---|---|
| $state | integer | string |
| Exception | Description |
|---|---|
| \Zend_Search_Exception |