Deterministic visibly pushdown automaton. Accepts subset of context free languages.
More...
|
| VisiblyPushdownDPDA (ext::set< StateType > states, ext::set< InputSymbolType > callAlphabet, ext::set< InputSymbolType > returnAlphabet, ext::set< InputSymbolType > localAlphabet, ext::set< PushdownStoreSymbolType > pushdownStoreAlphabet, StateType initialState, PushdownStoreSymbolType bottomOfTheStackSymbol, ext::set< StateType > finalStates) |
| Creates a new instance of the automaton with a concrete set of states, call, return, and local alphabets, pushdown store alphabet, initial state, bottom of the stack symbol, and a set of final states. More...
|
|
| VisiblyPushdownDPDA (StateType initialState, PushdownStoreSymbolType bottomOfTheStackSymbol) |
| Creates a new instance of the automaton with a concrete initial state and bottom of the stack symbol. More...
|
|
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) |
|
bool | removeState (const StateType &state) |
|
const ext::set< StateType > & | getFinalStates () const & |
|
ext::set< StateType > && | getFinalStates () && |
|
bool | addFinalState (StateType state) |
|
void | setFinalStates (ext::set< StateType > states) |
|
bool | 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) |
|
bool | removePushdownStoreSymbol (const PushdownStoreSymbolType &symbol) |
|
const PushdownStoreSymbolType & | getBottomOfTheStackSymbol () const & |
|
PushdownStoreSymbolType && | getBottomOfTheStackSymbol () && |
|
bool | setBottomOfTheStackSymbol (PushdownStoreSymbolType symbol) |
|
const ext::set< InputSymbolType > & | getCallInputAlphabet () const & |
|
ext::set< InputSymbolType > && | getCallInputAlphabet () && |
|
bool | addCallInputSymbol (InputSymbolType symbol) |
|
void | addCallInputSymbols (ext::set< InputSymbolType > symbols) |
|
void | setCallInputAlphabet (ext::set< InputSymbolType > symbols) |
|
bool | removeCallInputSymbol (const InputSymbolType &symbol) |
|
const ext::set< InputSymbolType > & | getReturnInputAlphabet () const & |
|
ext::set< InputSymbolType > && | getReturnInputAlphabet () && |
|
bool | addReturnInputSymbol (InputSymbolType symbol) |
|
void | addReturnInputSymbols (ext::set< InputSymbolType > symbols) |
|
void | setReturnInputAlphabet (ext::set< InputSymbolType > symbols) |
|
bool | removeReturnInputSymbol (const InputSymbolType &symbol) |
|
const ext::set< InputSymbolType > & | getLocalInputAlphabet () const & |
|
ext::set< InputSymbolType > && | getLocalInputAlphabet () && |
|
bool | addLocalInputSymbol (InputSymbolType symbol) |
|
void | addLocalInputSymbols (ext::set< InputSymbolType > symbols) |
|
void | setLocalInputAlphabet (ext::set< InputSymbolType > symbols) |
|
bool | removeLocalInputSymbol (const InputSymbolType &symbol) |
|
bool | removeInputSymbol (const InputSymbolType &symbol) |
|
bool | addCallTransition (StateType from, InputSymbolType input, StateType to, PushdownStoreSymbolType push) |
| Adds a call transition to the automaton. More...
|
|
bool | addReturnTransition (StateType from, InputSymbolType input, PushdownStoreSymbolType pop, StateType to) |
| Adds a return transition to the automaton. More...
|
|
bool | addLocalTransition (StateType from, InputSymbolType input, StateType to) |
| Adds a local transition to the automaton. More...
|
|
bool | removeCallTransition (const StateType &from, const InputSymbolType &input, const StateType &to, const PushdownStoreSymbolType &push) |
| Removes a call transition from the automaton. More...
|
|
bool | removeReturnTransition (const StateType &from, const InputSymbolType &input, const PushdownStoreSymbolType &pop, const StateType &to) |
| Removes a return transition from the automaton. More...
|
|
bool | removeLocalTransition (const StateType &from, const InputSymbolType &input, const StateType &to) |
| Removes a local transition from the automaton. More...
|
|
const ext::map< ext::pair< StateType, InputSymbolType >, ext::pair< StateType, PushdownStoreSymbolType > > & | getCallTransitions () const & |
|
ext::map< ext::pair< StateType, InputSymbolType >, ext::pair< StateType, PushdownStoreSymbolType > > && | getCallTransitions () && |
|
const ext::map< ext::tuple< StateType, InputSymbolType, PushdownStoreSymbolType >, StateType > & | getReturnTransitions () const & |
|
ext::map< ext::tuple< StateType, InputSymbolType, PushdownStoreSymbolType >, StateType > && | getReturnTransitions () && |
|
const ext::map< ext::pair< StateType, InputSymbolType >, StateType > & | getLocalTransitions () const & |
|
ext::map< ext::pair< StateType, InputSymbolType >, StateType > && | getLocalTransitions () && |
|
auto | operator<=> (const VisiblyPushdownDPDA &other) const |
|
bool | operator== (const VisiblyPushdownDPDA &other) const |
|
void | accessComponent () |
|
template<class InputSymbolTypeT = DefaultSymbolType, class PushdownStoreSymbolTypeT = DefaultSymbolType, class StateTypeT = DefaultStateType>
class automaton::VisiblyPushdownDPDA< InputSymbolTypeT, PushdownStoreSymbolTypeT, StateTypeT >
Deterministic visibly pushdown automaton. Accepts subset of context free languages.
Definition A = (Q, T = C \cup R \cup L, G, I, Z, \delta, F), Q (States) = nonempty finite set of states, T (TerminalAlphabet) = finite set of terminal symbols split to three disjoint parts
- C (CallAlphabet) = symbols used with transitions increasing the pushdown store,
- R (ReturnAlphabet) = symbols used with transitions decreasing the pushdown store,
- L (LocalAlphabet) = symbols used with transitions leaving the height of the pushdown store unchanged G (PushdownStoreAlphabet) = finite set of pushdown store symbol - having this empty makes the automaton equivalent to DFA I (InitialState) = initial state, Z (BottomOfTheStackSymbol) = initial pushdown store symbol \delta is split to three disjoint parts
- \delta_{call} of the form A \times c -> B \times g, where A, B \in Q, a \in C, and g \in G
- \delta_{return} of the form A \times r \times g -> B, where A, B \in Q, r \in C, and g \in G
- \delta_{local} of the form A \times l -> B, where A, B \in Q, a \in C F (FinalStates) = set of final states
The transition functions must meet following criteria. Othervise adding conflicting transition will cause exception. $|\delta_{call} (q, c)| \leq 1$, $\forall q \in Q, c \in C$ $|\delta_{return} (q, r, g)| \leq 1$, $\forall q \in Q, r \in L, g \in G$ $|\delta_{local} (q, l)| \leq 1$, $\forall q \in Q, l \in R$
- 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. |