How it works
It is very easy :).
Design of command is building a graph of syntax.
Nodes has only two (one to one) pointers for previous and next nodes.
Every graph must have START and STOP node.
Building is working on graph by searching
neighbours of actual node based on next and previous pointers information.
When node is GROUP app puts actual graph to stack and load new one.