GraphViz2::Parse::Marpa - Visualize a Marpa grammar as a graph
#!/usr/bin/env perl use strict; use warnings; use File::Spec; use GraphViz2; use GraphViz2::Parse::Marpa; 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}, graph => {rankdir => 'TB'}, logger => $logger, node => {color => 'blue', shape => 'oval'}, ); my($g) = GraphViz2::Parse::Marpa -> new(graph => $graph); my $grammar = slurp(File::Spec -> catfile('t', 'sample.marpa.1.dat') ); $g -> create(grammar => $grammar); my($format) = shift || 'svg'; my($output_file) = shift || File::Spec -> catfile('html', "parse.marpa.$format"); $graph -> run(format => $format, output_file => $output_file);
See scripts/parse.marpa.pl ("Scripts Shipped with this Module" in GraphViz2).
Takes a Marpa grammar and converts it into a graph.
You can write the result in any format supported by Graphviz.
Here is the list of output formats.
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.
Install GraphViz2 as you would for any Perl module:
Perl
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
new() is called as my($obj) = GraphViz2::Parse::Marpa -> new(k1 => v1, k2 => v2, ...).
new()
my($obj) = GraphViz2::Parse::Marpa -> new(k1 => v1, k2 => v2, ...)
It returns a new object of type GraphViz2::Parse::Marpa.
GraphViz2::Parse::Marpa
Key-value pairs accepted in the parameter list:
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.
Creates the graph, which is accessible via the graph() method, or via the graph object you passed to new().
Returns $self for method chaining.
$grammar is the set of hashrefs which make up the rule descriptors for the Marpa grammar.
That is, it is the contents of the arrayref 'rules', which is one of the keys in the parameter list to Marpa::Grammar's new(). See t/sample.marpa.1.dat for an example.
Nodes are given the names of the 'lhs' keys within each rule descriptor (a hashref), with numeric suffixes to separate nodes which would otherwise have the same name. The numbers are just 1 .. N counting the hashrefs processed in the grammar.
Returns the graph object, either the one supplied to new() or the one created during the call to new().
See "FAQ" in GraphViz2 and "Scripts Shipped with this Module" in GraphViz2.
Many thanks are due to the people who chose to make Graphviz Open Source.
And thanks to Leon Brocard, who wrote GraphViz, and kindly gave me co-maint of the module.
Version numbers < 1.00 represent development versions. From 1.00 up, they are production versions.
The file CHANGES was converted into Changelog.ini by Module::Metadata::Changes.
Email the author, or log a bug on RT:
https://rt.cpan.org/Public/Dist/Display.html?Name=GraphViz2.
GraphViz2 was written by Ron Savage <ron@savage.net.au> in 2011.
Home page: http://savage.net.au/index.html.
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
To install GraphViz2, copy and paste the appropriate command in to your terminal.
cpanm
CPAN shell
perl -MCPAN -e shell install GraphViz2
For more information on module installation, please visit the detailed CPAN module installation guide.