Recently, I’ve been interested in the console of the Source game engine, more specifically, its alias
command, which allows one command to invoke others. It may allow recursion (i.e. running alias freeze freeze
will cause inputting freeze
to freeze the engine), but does not allow parameters (i.e. running "alias define alias
" will cause "define a b
" to function as if alias
with no parameters is ran).
An alias may consist of several commands, however, so alias foo "alias foo bar; foo"
is allowed. Lastly, aliases may be modified to do nothing whatsoever (for example, alias foo
removes the functionality of foo
).
Given these properties, it’s rather trivial to prove that aliases are exactly as powerful as a finite-state machine. However, it does not require redefinition of aliases during state changes, and may define transitions to do nothing.
If state one is defined by alias state1 "alias input1 state2; alias input2 state1"
, and state two is defined by alias state2 "alias input2 state2"
, then the function of input one does not change.
This means that it may be modeled by a single, constantly active state with transitions leading to actions which may define, undefine, or redefine one or several transitions, but keep the other transitions the same, and keep the main state active.
Alternatively, it may be modeled by a standard deterministic finite automaton with transitions not redefined after the transition from one state to another persisting, and the ability for states to define transitions to do nothing whatsoever.
Given these principles, what studied extension of a finite state machine (such as a UML state machine), if any, does this model?
If there is no studied model, I would still be interested in knowing what tuple describes this.