Barrie Slaymaker > StateML > StateML

Download:
StateML-0.22.tar.gz

Dependencies

Annotate this POD

View/Report Bugs
Module Version: 0.22   Source  

NAME ^

StateML - State Machine Markup Language, with GraphViz and template-driven code generation

SYNOPSIS ^

   ## See the stml command for command line use (recommended)

   ## Here's what a .stml file might look like:

   <machine
       id="main"
       xmlns="http://slaysys.com/StateML/1.0"
       xmlns:C="http://your.com/path/to/ns/for/C/code"
       xmlns:Perl="http://your.com/path/to/ns/for/perl/code"
       xmlns:Java="http://your.com/path/to/ns/for/Java/code"
       ...
    >
       <event id="init">
           <C:api>void init_event_handler()</C:api>
       </event>
       <state id="#ALL" graphviz:style="dashed">
           <arc event_id="init" goto="running">
               <C:handler>init_device()</C:handler>
           </arc>
       </state>
       <state id="running"/>
   </machine>

   use StateML;

   my $machine = StateML->parse( $source ); ## filename, GLOB, etc.

   StateML->parse( $source, $machine ); ## Add to existing machine

   ... process $machine as needed, see stml source for ideas...

DESCRIPTION ^

WARNING: Alpha code. I use it in production, but you may want to limit your use to development only.

StateML is an XML dialect and a tool (stml) that reads this dialect (by default from files with a ".stml" extension) and converts it to source code using source code to a data structure.

It can then emit the data structure as a graphviz-generated image or graph specification or you may take the data structure and do what you want with it (bin/stml can pass it to template toolkit, for instance).

parse
    my $m = StateML->parse( \$StateML_string ) ;
    my $m = StateML->parse( \*F ) ;

graphviz Support ^

Any XML attributes in the namespace

    http://slaysys.com/StateML/1.0/GraphViz

(generally mapped to the "graphviz:" prefix), like

    <machine
      id="foo"
      xmlns="http://slaysys.com/StateML/1.0"
      xmlns:graphviz="http://slaysys.com/StateML/1.0/GraphViz"
    >

      <event graphviz:style="bold">

      <state id="foo"
        graphviz:style="dashed"
        graphviz:peripheries="2"
      >
    </machine>

are passed to the dot program. See the dot program for details. StateML does not police these.

LIMITATIONS ^

Alpha code. Ok test suite, but we may need to change things in non-backward compatible ways.

COPYRIGHT ^

    Copyright 2003, R. Barrie Slaymaker, Jr., All Rights Reserved

LICENSE ^

You may use this module under the terms of the BSD, Artistic, or GPL licenses, any version.

AUTHOR ^

Barrie Slaymaker <barries@slaysys.com>

syntax highlighting: