|
| const StateType & | getInitialState () const & |
| |
| StateType && | getInitialState () && |
| |
| bool | setInitialState (StateType state) |
| |
| const ext::set< StateType > & | getStates () const & |
| |
| ext::set< StateType > && | getStates () && |
| |
| bool | addState (StateType state) |
| |
| void | setStates (ext::set< StateType > states) |
| |
| void | removeState (const StateType &state) |
| |
| const ext::set< StateType > & | getFinalStates () const & |
| |
| ext::set< StateType > && | getFinalStates () && |
| |
| bool | addFinalState (StateType state) |
| |
| void | setFinalStates (ext::set< StateType > states) |
| |
| void | removeFinalState (const StateType &state) |
| |
| const ext::set< PushdownStoreSymbolType > & | getPushdownStoreAlphabet () const & |
| |
| ext::set< PushdownStoreSymbolType > && | getPushdownStoreAlphabet () && |
| |
| bool | addPushdownStoreSymbol (PushdownStoreSymbolType symbol) |
| |
| void | addPushdownStoreSymbols (ext::set< PushdownStoreSymbolType > symbols) |
| |
| void | setPushdownStoreAlphabet (ext::set< PushdownStoreSymbolType > symbols) |
| |
| void | removePushdownStoreSymbol (const PushdownStoreSymbolType &symbol) |
| |
| const PushdownStoreSymbolType & | getInitialSymbol () const & |
| |
| PushdownStoreSymbolType && | getInitialSymbol () && |
| |
| bool | setInitialSymbol (PushdownStoreSymbolType symbol) |
| |
| const ext::set< InputSymbolType > & | getInputAlphabet () const & |
| |
| ext::set< InputSymbolType > && | getInputAlphabet () && |
| |
| bool | addInputSymbol (InputSymbolType symbol) |
| |
| void | addInputSymbols (ext::set< InputSymbolType > symbols) |
| |
| void | setInputAlphabet (ext::set< InputSymbolType > symbols) |
| |
| void | removeInputSymbol (const InputSymbolType &symbol) |
| |
| auto | operator<=> (const DPDA &other) const |
| |
| bool | operator== (const DPDA &other) const |
| |
|
| | DPDA (ext::set< StateType > states, ext::set< InputSymbolType > inputAlphabet, ext::set< PushdownStoreSymbolType > pushdownStoreAlphabet, StateType initialState, PushdownStoreSymbolType initialSymbol, ext::set< StateType > finalStates) |
| | Creates a new instance of the automaton with a concrete set of states, input alphabet, pushdown store alphabet, initial state, initial pushdown symbol and a set of final states. More...
|
| |
| | DPDA (StateType initialState, PushdownStoreSymbolType initialPushdownSymbol) |
| | Creates a new instance of the automaton with a concrete initial state and initial pushdown store symbol. More...
|
| |
| bool | addTransition (StateType from, common::symbol_or_epsilon< InputSymbolType > input, ext::vector< PushdownStoreSymbolType > pop, StateType to, ext::vector< PushdownStoreSymbolType > push) |
| | Adds a transition to the automaton. More...
|
| |
| bool | addTransition (StateType from, InputSymbolType input, ext::vector< PushdownStoreSymbolType > pop, StateType to, ext::vector< PushdownStoreSymbolType > push) |
| | Adds a transition to the automaton. More...
|
| |
| bool | addTransition (StateType from, ext::vector< PushdownStoreSymbolType > pop, StateType to, ext::vector< PushdownStoreSymbolType > push) |
| | Adds a transition to the automaton. More...
|
| |
| bool | removeTransition (const StateType &from, const common::symbol_or_epsilon< InputSymbolType > &input, const ext::vector< PushdownStoreSymbolType > &pop, const StateType &to, const ext::vector< PushdownStoreSymbolType > &push) |
| | Removes a transition from the automaton. More...
|
| |
| bool | removeTransition (const StateType &from, const InputSymbolType &input, const ext::vector< PushdownStoreSymbolType > &pop, const StateType &to, const ext::vector< PushdownStoreSymbolType > &push) |
| | Removes a transition from the automaton. More...
|
| |
| bool | removeTransition (const StateType &from, const ext::vector< PushdownStoreSymbolType > &pop, const StateType &to, const ext::vector< PushdownStoreSymbolType > &push) |
| | Removes a transition from the automaton. More...
|
| |
| const ext::map< ext::tuple< StateType, common::symbol_or_epsilon< InputSymbolType >, ext::vector< PushdownStoreSymbolType > >, ext::pair< StateType, ext::vector< PushdownStoreSymbolType > > > & | getTransitions () const & |
| |
| ext::map< ext::tuple< StateType, common::symbol_or_epsilon< InputSymbolType >, ext::vector< PushdownStoreSymbolType > >, ext::pair< StateType, ext::vector< PushdownStoreSymbolType > > > && | getTransitions () && |
| |
| ext::map< ext::tuple< StateType, common::symbol_or_epsilon< InputSymbolType >, ext::vector< PushdownStoreSymbolType > >, ext::pair< StateType, ext::vector< PushdownStoreSymbolType > > > | getTransitionsFromState (const StateType &from) const |
| |
| ext::map< ext::tuple< StateType, common::symbol_or_epsilon< InputSymbolType >, ext::vector< PushdownStoreSymbolType > >, ext::pair< StateType, ext::vector< PushdownStoreSymbolType > > > | getTransitionsToState (const StateType &to) const |
| |
| void | accessComponent () |
| |
template<class InputSymbolTypeT = DefaultSymbolType, class PushdownStoreSymbolTypeT = DefaultSymbolType, class StateTypeT = DefaultStateType>
class automaton::DPDA< InputSymbolTypeT, PushdownStoreSymbolTypeT, StateTypeT >
Deterministic pushdown automaton. Accepts subset of context free languages.
Definition A = (Q, T, G, I, Z, \delta, F), Q (States) = nonempty finite set of states, T (TerminalAlphabet) = finite set of terminal symbols - having this empty won't let automaton do much though, G (PushdownStoreAlphabet) = finite set of pushdown store symbol - having this empty makes the automaton equivalent to DFA I (InitialState) = initial state, Z (InitialPushdownStoreSymbol) = initial pushdown store symbol \delta = transition function of the form A \times a \times \alpha -> B \times \beta, where A, B \in Q, a \in T \cup { \eps }, and \alpha, \beta \in G*, F (FinalStates) = set of final states
The transition functions must meet following criteria. Othervise adding conflicting transition will cause exception. $|\delta (q, a, \gamma)| \leq 1$, $\forall q, a, \gamma, q \in Q, a \in (T \cup \varepsilon\}), \gamma \in G^*.$ if $\delta (q, a, \alpha) \neq \emptyset$, $\delta (q, a, \beta) \neq \emptyset$ and $\alpha \neq \beta$, then $\alpha$ is not suffix of $\beta$ and $\beta$ is not suffix of $\alpha$ (formally $\gamma \alpha \neq \beta and \alpha \neq \gamma \beta$). if $\delta(q, a, \alpha) \neq \emptyset$, $\delta (q, \varepsilon, \beta) \neq \emptyset$, then $\alpha$ is not suffix of $\beta$ and $\beta$ is not suffix of $\alpha$ (fornally $\gamma \alpha \neq \beta and \alpha \neq \gamma \beta$).
- Template Parameters
-
| InputSymbolTypeT | used for the terminal alphabet |
| PushdownSymbolTypeT | used for the pushdown store alphabet |
| StateTypeT | used to the states, and the initial state of the automaton. |