GraphViz2::Parse::STT(3)

NAME
GraphViz2::Parse::STT - Visualize a Set::FA::Element state transition table as a graph

Synopsis
        #!/usr/bin/env perl

        use strict;
        use warnings;

        use File::Spec;

        use GraphViz2;
        use GraphViz2::Parse::STT;

        use Log::Handler;

        use Perl6::Slurp;

        # ------------------------------------------------

        my($logger) = Log::Handler -> new;

        $logger -> add
                (
                 screen =>
                 {
                         maxlevel       => 'debug',
                         message_layout => '%m',
                         minlevel       => 'error',
                 }
                );

        my($graph)  = GraphViz2 -> new
                (
                 edge   => {color => 'grey'},
                 global => {directed => 1, record_orientation => 'horizontal'},
                 graph  => {rankdir => 'TB'},
                 logger => $logger,
                 node   => {color => 'green', shape => 'oval'},
                );
        my($g)  = GraphViz2::Parse::STT -> new(graph => $graph);
        my $stt = slurp(File::Spec -> catfile('t', 'sample.stt.1.dat') );

        $g -> create(stt => $stt);

        my($format)      = shift || 'svg';
        my($output_file) = shift || File::Spec -> catfile('html', "parse.stt.$format");

        $graph -> run(format => $format, output_file => $output_file);

See scripts/parse.stt.pl ("Scripts Shipped with this Module" in GraphViz2).

Note: t/sample.stt.2.dat is output from Graph::Easy::Marpa::DFA V 0.70, and can be used instead of t/sample.stt.1.dat in the above code.

Description
Takes a Set::FA::Element-style state transition table and converts it into a graph.

You can write the result in any format supported by Graphviz <http://www.graphviz.org/>.

Here is the list of output formats <http://www.graphviz.org/content/output-formats>.

Distributions
This module is available as a Unix-style distro (*.tgz).

See <http://savage.net.au/Perl-modules/html/installing-a-module.html> for help on unpacking and installing distros.

Installation
Install GraphViz2 as you would for any "Perl" module:

Run:

        cpanm GraphViz2

or run:

        sudo cpan GraphViz2

or unpack the distro, and then either:

        perl Build.PL
        ./Build
        ./Build test
        sudo ./Build install

or:

        perl Makefile.PL
        make (or dmake or nmake)
        make test
        make install

Constructor and Initialization

  Calling new()
"new()" is called as "my($obj) = GraphViz2::Parse::STT -> new(k1 => v1, k2 => v2, ...)".

It returns a new object of type "GraphViz2::Parse::STT".

Key-value pairs accepted in the parameter list:

o graph => $graphviz_object
    This option specifies the GraphViz2 object to use. This allows you to configure it as desired.

    The default is GraphViz2 -> new. The default attributes are the same as in the synopsis, above, except for the graph label of course.

    This key is optional.

Methods

  create(stt => $state_transition_table)
Creates the graph, which is accessible via the graph() method, or via the graph object you passed to new().

Returns $self for method chaining.

$state_transition_table is a list of arrayrefs, each with 3 elements.

That is, it is the contents of the arrayref 'transitions', which is one of the keys in the parameter list to Set::FA::Element's new().

A quick summary of each element of this list, where each element is an arrayref with 3 elements:

o [0] A state name
o [1] A regexp
o [2] Another state name (which may be the same as the first)

The DFA in Set::FA::Element tests the 'current' state against the state name ([0]), and for each state name which matches, tests the regexp ([1]) against the next character in the input stream. The first regexp to match causes the DFA to transition to the state named in the 3rd element of the arrayref ([2]).

See t/sample.stt.1.dat for an example.

  graph()
Returns the graph object, either the one supplied to new() or the one created during the call to new().

FAQ
See "FAQ" in GraphViz2 and "Scripts Shipped with this Module" in GraphViz2.

Thanks
Many thanks are due to the people who chose to make Graphviz <http://www.graphviz.org/> Open Source.

And thanks to Leon Brocard <http://search.cpan.org/~lbrocard/>, who wrote GraphViz, and kindly gave me co-maint of the module.

Version Numbers
Version numbers < 1.00 represent development versions. From 1.00 up, they are production versions.

Machine-Readable Change Log
The file CHANGES was converted into Changelog.ini by Module::Metadata::Changes.

Support
Email the author, or log a bug on RT:

<https://rt.cpan.org/Public/Dist/Display.html?Name=GraphViz2>.

Author
GraphViz2 was written by Ron Savage <ron@savage.net.au> in 2011.

Home page: <http://savage.net.au/index.html>.

Copyright
Australian copyright (c) 2011, Ron Savage.

        All Programs of mine are 'OSI Certified Open Source Software';
        you can redistribute them and/or modify them under the terms of
        The Artistic License, a copy of which is available at:
        http://www.opensource.org/licenses/index.html