SMC takes a state machine stored in an .sm file and generates the state pattern classes in fourteen programming languages. Its features include default transitions, transition arguments, transition guards, push/pop transitions, and Entry/Exit actions. It requires Java SE 1.6 or better.
| Tags | Software Development Build Tools Code Generators Compilers |
|---|---|
| Licenses | MPL |
| Operating Systems | OS Independent |
| Implementation | C# C++ Java Tcl Visual Basic Python C |
Recent releases


Changes: This release requires Java 1.6. The source code has been rearranged to create 3 underlying Java packages: parser, model, and generator, allowing developers to use SMC technology in their own application. Javadoc documentation is provided for each package. Internal and external loopback features are completed. Several bugs have been fixed.


Changes: This release adds PHP and Scala support. It adds a new Jump transition. There are various bugfixes.


Changes: Release 5.0.1 was missing files. This release corrects that oversight.


Changes: This release adds Groovy code generation. It adds Java state change notification based on Java Beans. 7 bugs have been corrected.


Changes: This release adds two new target languages: Lua and Objective-C. There are also several minor bugfixes.
A shared address book and calendar events on your own server.
- All comments
Recent commentsRe: very entertaining sales pitch
> nice compiler too :-) How hard do you
> think it would be to target more
> declarative languages, eg: BXML
> (backbase.com)?
I am not familiar with BXML so I do not know what the
generated output should look like. But as for adding a new
language to SMC, it is a matter of adding
SmcBXMLGenerator class which extends the
SmcCodeGenerator class. SMC uses the visitor pattern to
emit the target language output.
Of course, after writing SmcBXMLGenerator there is writing
the documenation.
very entertaining sales pitch
nice compiler too :-) How hard do you think it would be to target more declarative languages, eg: BXML (backbase.com)?