[ANN] SMC - State Machine Compiler v. 1.3.1
- SMC - The State Machine Compiler v. 1.3.1
Requires: Java 1.2 SE (Standard Edition) or better.
Home Page: http://smc.sourceforge.net
+ Added a "-noex" command line option which may be used with
"-c++" to prevent C++ exception throw code from being generated
in the target source code. assert() is used instead. This
option was added due to exceptions not being support by all
+ Fixed three bugs. The first was a SMC crash when compiling a
method/subroutine argument which also had arguments. For
would cause SMC to crash while
The second bug broke state machine serialization in Java.
This was due to FSMContext._debug_stream being a
java.io.PrintStream and this class is not serializable.
This was fixed by declaring FSMContext._debug_stream as
transient (meaning this member data is not included in an
object's serialization) and having FSMContext.getDebugStream()
return System.err when _debug_stream is null (which it will be
when the state machine is deserialized). Also,
FSMContext.getDebugFlag() returns false if _debug_stream is
The third bug occurred when a Default transition's end state
happens to be the current state, making the Default transition
a loopback. The only way to detect this situation is at runtime
and SMC only checked for loopbacks at compile time. The result:
this runtime loopback transition executed the current state's
exit and entry actions when it should not have. This release
corrects this situation by adding a runtime check for loopbacks
to Default transitions which might be a runtime loopback.
What is SMC?
SMC takes a state machine description (stored in a .sm file) and
generates State pattern classes in a target language (C++, Java
and Tcl are currently supported). SMC is a console-based app
written in Java which means SMC can run anywhere Java (1.2 or
better) can run. The download package includes an example
directory showing how SMC can used with C++, Java and Tcl
(requires [incr Tcl] package). The examples range from trivial to
How can I learn more?
At http://smc.sourceforge.net You can access the SMC
Programmer's Manual there as well. While you're there, check out
the SMC demo applet at http://smc.sourceforge.net/SmcDemo.htm.
Where can I get it?
SMC and the Programmer's Manual can be downloaded from
http://sourceforge.net/projects/smc. You can also use this
+ Ask questions (via the Public Forum's Help discussion)
+ Submit a bug.
+ Join a mailing list.
+ Access SMC documentation.
+ Access SMC's source code in the CVS repository.
(Note: in order to make full use of SourceForge capabilities,
you must be a SourceForge member. If you are not a member,
head over to http://sourceforge.net/account/register.php
and sign up. SourceForge membership is free - no money, no
requirements and NO SPAM! Membership has its benefits.)
If you have any problems, surf over to
http://sourceforge.net/forum/forum.php?forum_id=27865 and report
the problem. I will try and answer you via the Help forum as
quickly as I can.
[[Send Tcl/Tk announcements to tcl-announce@...
Send administrivia to tcl-announce-request@...
Announcements archived at http://groups.yahoo.com/group/tcl_announce/
The primary Tcl/Tk archive is ftp://ftp.neosoft.com/pub/tcl/ ]]