jp-embedded / scxmlcc

The SCXML state machine to C++ compiler
GNU General Public License v3.0
138 stars 34 forks source link

Home | Documentation | Latest Release | scxmlgui | Scxml Editor

Welcome to scxmlcc.

The scxml state machine to c++ compiler.

Target Build & Test
CircleCI

What?

The goal of scxmlcc is to make a Open Source full featured state machine compiler that can generate simple and effective C++ state machines from scxml state charts.

This project is developed and professionally supported by jp-embedded ApS and is released under the GNU GPL v3. However, the generated state machine code is not covered by license.

Why?

There are several reasons why this project started.

Features

scxmlcc does not yet support all features of the scxml standard. Most of the core constructs are in place though. Besides the standard, custom constructs is implemented. This means that constructs like the data model, actions and conditions can be implemented in C++ and then be attached to the state machine, instead of implementing them in scxml. Thus, seperating the state machine and the logic.

The generated state machines use standard C++ constructs as much as possible such as abstract classes and templates to minimize the code needed to implement the state machine. However we try not to overdo templates to keep the code readable, while making the code as efficient as possible. Macros are totally avoided. If you like macros to for example define custom actions, you can easily add them on your own.

The folowing features are currently implemented:

Next todo on the feature list is to complete the core constructs of the scxml standard. Most importantly, this include:

If you have any suggestions on features to prioritize, please create an issue.

For a chat, you can also write to me on messenger here

For more information, see Documentation