Search/Lucene/FSM.php
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-2012 Zend Technologies USA Inc. (http://www.zend.com)
- License
- New BSD License
- Package
- Zend_Search_Lucene
- Version
- $Id: FSM.php 24593 2012-01-05 20:35:02Z matthew $
\Zend_Search_Lucene_FSM
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-2012 Zend Technologies USA Inc. (http://www.zend.com)
- License
- New BSD License
Properties


array $_entryActions = array()
[state] => action
array()
Details- Type
- array


array $_exitActions = array()
[state] => action
array()
Details- Type
- array


array $_inputActions = array()
[state][input] => action
array()
Details- Type
- array


array $_rules = array()
[sourceState][input] => targetState
array()
Details- Type
- array
Methods


__construct(array $states = array(), array $inputAphabet = array(), array $rules = array()) : void
Finite 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.
Name | Type | Description |
---|---|---|
$states | array | |
$inputAphabet | array | |
$rules | array |


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


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


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


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


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


addRule(integer | string $sourceState, integer | string $input, integer | string $targetState, \Zend_Search_Lucene_FSMAction | null $inputAction = null) : void
Add symbol to the input alphabet
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) : void
Add transition rules
array structure: array( array(sourseState, input, targetState[, inputAction]), array(sourseState, input, targetState[, inputAction]), array(sourseState, input, targetState[, inputAction]), ... )
Name | Type | Description |
---|---|---|
$rules | array |


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


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


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


process(mixed $input) : void
Process an input
Name | Type | Description |
---|---|---|
$input | mixed |
Exception | Description |
---|---|
\Zend_Search_Exception |


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