#  -*- Mode: Outline -*-
#  $Date: 2005/04/17 19:51:23 $

* Pending

** All errors from getdefs and columns should start with,
   `options.pzProgName' (aka 'basename(argv[0])').

** Change the invocations of getdefs to send output to stdout in
   preference to invoking autogen internally.  The current method is ugly.

=== Component Todo: agen5/TODO ===
Subject: Re: Automated Finite State Machine project

akninlir@post.tau.ac.il wrote:
> 
> Dear mr. Korb,
> 
> We are 2 students of computer science from Tel-Aviv University.
> We have seen the Automated Finite State Machine project that you
> develop on fresh meat, and and we consider to join it as part of
> the unix - open source workshop we take.

OK.  Welcome!

> We would like to hear more details about the project, e.g:
>  1) How much was done so far, and where it stands these days.

Basically, it takes a machine description in the form of a list
of state names, a list of transition events (input tokens) and
a list of transitions and from that produces a transition table.
This is better described here:

  http://Autogen.SourceForge.Net/autofsm.html

That page has links to a usage and an example page.

>  2) Is their a certain independent part of the project we can
>     work on (as our workshop requires), and if there is, what
>     would it be.

ATT Research has an open source Finite-State Machine Library:

  http://www.research.att.com/sw/tools/fsm/

that does some pretty useful stuff.  In particular, "dot" and "dotty"
will produce graphical representations of FSM's.  My stuff produces
somewhat more practical stuff for common day-to-day programming
tasks (see the three examples AutoGen uses itself).  So, it would
be interesting to figure out how to emit an ATT Research style
FSM description from an Auto-FSM style FSM description and take
advantage of their tools.

>  3) Are there any special algorithms and/or special programming
>     skills we should know or obtain.

You need to know about AutoGen.  AutoFSM is fundamentally an AutoGen
template (spread out in four files).  To produce the ATT Research FSM
description, a new template would need to be written.  It shouldn't be
terribly hard, but templates are a bit different than, say, an algorythmic-
centric language like Perl.  Think of it more like M4, only it does not
have the quoting clumsiness, arguments get passed by name, and its
functionality can be extended with a Scheme-like language (Guile).
You can download AutoGen here:

  http://sourceforge.net/project/showfiles.php?group_id=3593

You can also find AutoFSM as a separate package, but that package
is simply the template files from AutoGen (autogen-5.6.0/agen5/fsm*.tpl),
plus the web pages referenced above.

If you decide to go forward with this, please let me know.  It would
be my pleasure to help.

Regards, Bruce

