This Source Code Form is subject to the terms of the Mozilla Public License,
v.2.0. If a copy of the MPL was not distributed with this file, You can obtain
one at http://mozilla.org/MPL/2.0/.
#SPC-plugin_mutate_track_ctest
# Design
The parser is a strict Moore FSM.
The FSM is small enough that a switch implementation is good enough, clear and explicit.
The parser has a strict separation of the *next state* and *action*.
This is to make it easier to unittest the FSM is so is needed.
It also makes it easier to understand what the state transitions are dependent on and when an action is performed.
The calculation of the next state is a strongly pure function to enforce that it is only dependent on the input. See: nextState.