R
rapp
SMC - The State Machine Compiler v. 4.0.0
Requires: Java 1.4.1 SE (Standard Edition) or better.
Download: http://sourceforge.net/projects/smc
Home Page: http://smc.sourceforge.net
=================================================================
What's New?
=================================================================
+ Added Python code generation. This capability and examples
provided by M. Francois Perrad.
+ Moved to Visitor pattern. By rearranging the SMC source code to
the Visitor pattern, it makes it easier to in new code
generators and code analyzers.
+ When SMC generates C++ and exceptions are allowed (when -noex
is *not* specified), then statemap::FSMContext:opState()
throws a PopOnEmptyStateStackException when a pop transition is
taken but the state stack is empty. Otherwise, assert() is
used.
+ Added a -return command line option which causes Smc.main() to
return rather than exit. This option is needed by ANT users.
=================================================================
Bug fixes
=================================================================
+ (C++) In statemap.h, the variable id and _id were changed to
stateId and _stateId, respectively. This change was also made
to the generated C++ code. This change was made due to "id"
being a keyword in the Macintosh Objective-C++ language.
+ Corrected error when multiple spaces between %header, %import,
%include and %declare keywords and the following name caused
an unhandled exception.
+ Corrected errors with % keywords and the -graph target.
+ (Java) Corrected error in generated serialization code. The
readObject() method was not restoring the current state. The
generated Java serialization code is now completely redone and
tested.
+ (Java) SMC now requires that the .sm source file has the same
basename as the context class' .java source file. So if the
context class is OrderConnection and is in
OrderConnection.java, then the associated FSM must be in
OrderConnection.sm.
+ (Ant) Corrected a syntax error in examples/Ant/EX7/build.xml.
+ (C++) When the .sm is in a subdirectory the slashes in the file
name are kept in the "#ifndef" in the generated header file.
This is syntactically wrong. SMC now replaces the slashes with
underscores.
=================================================================
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,
Tcl, VB.Net, C# and Python are currently supported). SMC is a
console-based app written in Java which means SMC can run
anywhere Java (1.4.1 or better) can run. The download package
includes an example directory showing how SMC can used with C++,
Java, Tcl (requires [incr Tcl] package), VB.Net, C# and Python.
The examples range from trivial to GUI apps.
=================================================================
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
website to:
+ 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.
Enjoy!
Charles Rapp
mailto:[email protected]
Requires: Java 1.4.1 SE (Standard Edition) or better.
Download: http://sourceforge.net/projects/smc
Home Page: http://smc.sourceforge.net
=================================================================
What's New?
=================================================================
+ Added Python code generation. This capability and examples
provided by M. Francois Perrad.
+ Moved to Visitor pattern. By rearranging the SMC source code to
the Visitor pattern, it makes it easier to in new code
generators and code analyzers.
+ When SMC generates C++ and exceptions are allowed (when -noex
is *not* specified), then statemap::FSMContext:opState()
throws a PopOnEmptyStateStackException when a pop transition is
taken but the state stack is empty. Otherwise, assert() is
used.
+ Added a -return command line option which causes Smc.main() to
return rather than exit. This option is needed by ANT users.
=================================================================
Bug fixes
=================================================================
+ (C++) In statemap.h, the variable id and _id were changed to
stateId and _stateId, respectively. This change was also made
to the generated C++ code. This change was made due to "id"
being a keyword in the Macintosh Objective-C++ language.
+ Corrected error when multiple spaces between %header, %import,
%include and %declare keywords and the following name caused
an unhandled exception.
+ Corrected errors with % keywords and the -graph target.
+ (Java) Corrected error in generated serialization code. The
readObject() method was not restoring the current state. The
generated Java serialization code is now completely redone and
tested.
+ (Java) SMC now requires that the .sm source file has the same
basename as the context class' .java source file. So if the
context class is OrderConnection and is in
OrderConnection.java, then the associated FSM must be in
OrderConnection.sm.
+ (Ant) Corrected a syntax error in examples/Ant/EX7/build.xml.
+ (C++) When the .sm is in a subdirectory the slashes in the file
name are kept in the "#ifndef" in the generated header file.
This is syntactically wrong. SMC now replaces the slashes with
underscores.
=================================================================
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,
Tcl, VB.Net, C# and Python are currently supported). SMC is a
console-based app written in Java which means SMC can run
anywhere Java (1.4.1 or better) can run. The download package
includes an example directory showing how SMC can used with C++,
Java, Tcl (requires [incr Tcl] package), VB.Net, C# and Python.
The examples range from trivial to GUI apps.
=================================================================
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
website to:
+ 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.
Enjoy!
Charles Rapp
mailto:[email protected]