slicc: support for transitions with a wildcard next state
authorDavid Hashe <david.hashe@amd.com>
Mon, 20 Jul 2015 14:15:18 +0000 (09:15 -0500)
committerDavid Hashe <david.hashe@amd.com>
Mon, 20 Jul 2015 14:15:18 +0000 (09:15 -0500)
commitee0d414fa8dac2371b439778374ec585b358e549
tree94d386b04002226fcf816c64c589d544e67504af
parent6a288d9de3422024b9e99caa8b3717d98e467314
slicc: support for transitions with a wildcard next state

This patches adds support for transitions of the form:

transition(START, EVENTS, *) { ACTIONS }

This allows a machine to collapse states that differ only in the next state
transition to collapse into one, and can help shorten/simplfy some protocols
significantly.

When * is encountered as an end state of a transition, the next state is
determined by calling the machine-specific getNextState function. The next
state is determined before any actions of the transition execute, and
therefore the next state calculation cannot depend on any of the transition
actions.
src/mem/slicc/parser.py
src/mem/slicc/symbols/State.py
src/mem/slicc/symbols/StateMachine.py
src/mem/slicc/symbols/Transition.py