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.
A set of slides (390K 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.
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 is listed on Freshmeat.net. You can be notified of new releases by subscribing to it there.