CHSM is a language system for specifying concurrent, hierarchical, finite state machines (an implementation of "statecharts") to model and control reactive systems.
CHSM uses its own statechart specification langauge annotated with either C++ or Java code fragments in the tradition of yacc grammars with C code fragments. The generated code is fully object oriented allowing multiple state machines to exist concurrently. The CHSM run-time library is small, efficient, and thread-safe.
When using CHSM with Java, you can alternatively specify a statechart using Groovy instead of using CHSM's specification language.
CHSM has been used successfullly in production environments such as CERN, Philips, Qualcomm, and for the ANTARES neutrino telescope project.
Documentation is included describing the specification language, C++ and Java classes, and compilers. There are also a few included examples. The source code is also generously commented.
A set of slides (3.9MB PDF) is available giving an overview of finite state machines, statecharts, and a CHSM language tour. Additionally, although the current implementation has evolved over time, the original description (304K PDF) is also available.
CHSM is free software available under the terms of the GNU General Public License. It also happens to be free of cost. (Commercial licenses are also available.)
Unix requirements: A C++ compiler (such as the GNU C++ compiler), a version of STL (the C++ Standard Template Library), a lexical analyzer generator (such as lex or flex), a parser generator (such as yacc or bison), GNU make, and, for the Java port, J2SE 1.5 SDK or later, and Ant 1.7.0 or later.
Download generic source code:
chsm
CHSM is listed on Freshmeat.net. You can be notified of new releases by subscribing to it there.