For quite a long time I’m thinking about simple code generating tools. I don’t want to use a special XML syntax or descriptive language but a simple Excel or OpenOffice sheet instead.
The aim is to generated C source code for small microcontroller applications or retrocomputing systems.
For the start I made a simple generator for finite state machines (Wikipedia entry)
It is also my first script written in Python and thus not really as tidy and neat as I prefer. But it is working for now.
It takes the sheet from an OpenOffice .ods table like this:
@brief | autofire button statemachine | |
@see | ||
State | Event | Next State |
INIT | KeyPressed | PULSE_ON |
INIT | KeyNotPressed | AUTOFIRE_OFF |
AUTOFIRE_OFF | KeyPressed | PULSE_ON |
PULSE_ON | KeyNotPressed | AUTOFIRE_OFF |
PULSE_ON | PulseTimeElapsed | PULSE_OFF |
PULSE_OFF | KeyNotPressed | AUTOFIRE_OFF |
PULSE_OFF | PulseTimeElapsed | PULSE_ON |
and generates a switch-case style state machine in C with callback functions for state and event handling.
A version with support for object oriented programming with pointers to statemachine objects is planned aswell. Check the github for functional updates.
The actual code can be found on Github: https://github.com/simonsunnyboy/gen-fsm