Download Shareware and Freeware Software for Windows, Linux, Macintosh, PDA

line Home  |  About Us  |  Link To Us  |  FAQ  |  Contact

Serving Software Downloads in 956 Categories, Downloaded 50.319.116 Times

B::Graph 0.51

  Date Added: August 18, 2010  |  Visits: 1.026

B::Graph

Report Broken Link
Printer Friendly Version


Product Homepage
Download (90 downloads)



B::Graph is a Perl compiler backend to produce graphs of OP trees. SYNOPSIS perl -MO=Graph,-text prog.pl >graph.txt perl -MO=Graph,-vcg prog.pl >graph.vcg xvcg graph.vcg perl -MO=Graph,-dot prog.pl | dot -Tps >graph.ps This module is a backend to the perl compiler (B::*) which, instead of outputting bytecode or C based on perls compiled version of a program, writes descriptions in graph-description languages specifying graphs that show the programs structure. It currently generates descriptions for the VCG tool (http://www.cs.uni-sb.de/RW/users/sander/html/gsvcg1.html) and Dot (part of the graph visualization toolkit from AT&T: http://www.research.att.com/sw/tools/graphviz/). It also can produce plain text output (which is more useful for debugging the module itself than anything else, though you might be able to make cut the nodes out and make a mobile or something similar). OPTIONS Like any other compiler backend, this module needs to be invoked using the O module to run correctly: perl -MO=Graph,-opt,-opt,-opt program.pl OR perl -MO=Graph,-opt,obj -e BEGIN {$obj = ["hi"]}; print $obj OR EVEN perl -e use O qw(Graph -opt obj obj); print "hi!n"; Obj is the name of a perl variable whose contents will be examined. It cant be a my() variable, and it shouldnt have a prefix symbol ($@^*), though you can specify a package -- the name will be used to look up a GV, whose various fields will lead to the scalar, array, and other values that correspond to the named variable. If no object is specified, the whole main program, including the CV that points to its pad, will be displayed. Each of the the opts can come from one of the following (each set is mutually exclusive; case and underscores are insignificant): -text, -vcg, -dot Produce output of the appropriate type. The default is -text, which isnt useful for much of anything (it does draw some nice ASCII boxes, though). -addrs, -no_addrs Each of the nodes on the graph produced corresponds to a C structure that has an address and includes pointers to other structures. The module uses these addresses to decide how to draw edges, but it makes the graph more compact if they arent printed. The default is -no_addrs. -compile_order, -run_order The collection of OPs that perl compiles a script into has two different layers of structure. It has a tree structure which corresponds roughly to the synactic nesting of constructs in the source text, and a roughly linked-list representation, essentially a postorder traversal of this tree, which is used at runtime to decide what to do next. The graph can be drawn to emphasize one structure or the other. The former, compile_order, is the default, as it tends to lead to graphs with aspect ratios close to those of standard paper. -SVs, -no_SVs If OPs represent a programs compiled code, SVs represent its data. This includes literal numbers and strings (IVs, NVs, PVs, PVIVs, and PVNVs), regular arrays, hashes, and references (AVs, HVs, and RVs), but also the structures that correspond to individual variables (special HVs for symbol tables and GVs to represent values within them, and special AVs that hold my() variables (as well as compiler temporaries)), structures that keep track of code (CVs), and a variety of others. The default is to display all these too, to give a complete picture, but if you arent in a holistic mood, you can make them disappear. -ellipses, -rhombs The module tries to give the nodes representing SVs a different shape from those of OPs. OPs are usually rectangular, so two obvious shapes for SVs are ellipses and rhombuses (stretched diamonds). This option currently only makes a difference for VCG (ellipse is the default). -stashes, -no_stashes The hashes that perl uses to represent symbol tables are called stashes. Since every GV has a pointer back to its stash, its virtually inevitable for the links in a graph to lead to the main stash. Unfortunately stashes, especially the main one, can be quite big, and lead to forests of other structures -- theres one GV and another SV for each magic variable, plus all of @INC and %ENV, and so on. To prevent information overload, then, the display of stashes is disabled by default. -fileGVs, -no_fileGVs Another kind graph element that can be annoying are the pointers from every GV and COP (a kind of OP that occurs for every statement) to the GV that represents the file from which that code came (used for error messages). By default, these links arent shown, to keep them from cluttering the graph. Also, perls internal interfaces changed in a recent version, so in perl 5.005_63 or later you cant see the fileGVs at all. -SEQs, -no_SEQs As it is visited in the peephole optimization phase, each OP gets a sequence number, which is currently used by anything (except the peephole optimizer, to avoid visiting OPs twice). If you want to see these, ask for them. (COPs have their own sequence numbers too, but theyre more interesting to look at -- for instance, theyre used to bound the lifetimes of lexicals). -types, -no_types B::Graph always gives the type of each OP symbolically (entersub), but it can also print the numeric value of the type field, if you want. The default is no_types. -float, -no_float Almost every OP has an op_next and an op_sibling pointer, and B::Graph colors them distinctively (pink and light blue, respectively). Because of this, it isnt strictly necessary to anchor the arrow on a line in the OPs box saying op_next. The float option lets the graph layout engine start these arrows wherever it wants, which can sometimes lead to a more pleasing layout, at the expense of being less obvious. The default is not to float. -targlinks, -no_targlinks Lexical (my()) variables and temporary values used by individual OPs are stored in pads, per-code arrays linked to the CV. OPs store indexes into these arrays in the op_targ field, but B::Graph can often also draw links directly from the OP to the SV that stores the name of the variable. These links dont correspond to any real pointers, however, and they can make the graph more complicated, so they are disabled by default..

Requirements: No special requirements
Platforms: Linux
Keyword: Bgraph Compiler Default Graph Gv Lead To Libraries Module Op Ops Perl Produce Programming Svs
Users rating: 0/10

License: Freeware Size: 12.29 KB
USER REVIEWS
More Reviews or Write Review


B::GRAPH RELATED
Libraries  -  Finance::InteractiveBrokers::TWS 0.0.8
Finance::InteractiveBrokers::TWS is a Perl module that lets you talk to Interactivebrokers Traders Workstation using Perl. This module is a wrapper around InteractiveBrokers Traders Workstation (TWS) Java interface, that lets one interact with...
22.53 KB  
Libraries  -  Solaris::Kstat 0.05a
Solaris::Kstat is a Perl module to access Solaris Kstats from Perl. SYNOPSIS use Solaris::Kstat; my $kstat = Solaris::Kstat->new(); my ($usr1, $sys1, $wio1, $idle1) = @{$kstat->{cpu_stat}{0}{cpu_stat0}}{qw(user kernel wait idle)};...
24.58 KB  
Libraries  -  SQL::Preproc 0.10
SQL::Preproc is a Perl module to embed SQL in your Perl (ala SQL preprocessors). SYNOPSIS use SQL::Preproc subclass => Chart, emit => 1, keepsql => 1, syntax => [ Teradata ], pponly => 1, relax => 1, alias => 1, debug => 1; use DBI;...
52.22 KB  
Libraries  -  Archive::SelfExtract 1.3
Archive::SelfExtract is a Perl module to bundle compressed archives with Perl code. SYNOPSIS use Archive::SelfExtract; # writes output script to STDOUT Archive::SelfExtract::createExtractor( "perlcode.pl", "somefiles.zip" ); # with...
6.14 KB  
Libraries  -  XML::Filter::Dispatcher::Compiler 0.52
XML::Filter::Dispatcher::Compiler can compile rulesets in to code. SYNOPSIS use XML::Filter::Dispatcher::Compiler qw( xinline ); my $c = XML::Filter::Dispatcher::Compiler->new( ... ) my $code = $c->compile( Package => "My::Filter", Rules...
88.06 KB  
3D Graphic Tools  -  DGS Graph 0.9.0
DGS Graph was created to provide an easy to install graphing script, capable of generating graphs for web presentation..
24.58 KB  
Development Editors  -  FX Batch Compiler 1.1
FX Batch Compiler is a program designed to help you compile FX effect files and HLSL shader files using fxc command line compiler included in DirectX SDK. You can compile many files at time or one file with different settings. This is not shader...
 
Development Editors  -  DotNET Nuclear C# Compiler 1.0.3983.17298
DotNET Nuclear C# Compiler is a handy, easy to use application specially designed to help you edit and compile your source code fast and easy.
 
Modules  -  Default Image Attach 5.x-1.x-de
This module will allow a site administrator to set a default image when using the image_attach module. The image being picked must already be uploaded as an image node.
10 KB  
Development Editors  -  B Compiler 19.05.2009
The B compiler is a tool able to parse B models, and perform syntaxic and semantic analysis. It can also be used as a library, linked to applications manipulating B models (cross referencer, code generator, documentation generator, etc.).
2.13 MB  
NEW DOWNLOADS IN PROGRAMMING, LIBRARIES
Programming  -  Cedalion for Linux 0.2.6
Cedalion is a programming language that allows its users to add new abstractions and define (and use) internal DSLs. Its innovation is in the fact that it uses projectional editing to allow the new abstractions to have no syntactic limitations.
471.04 KB  
Programming  -  Math::GMPf 0.29
Math::GMPf - perl interface to the GMP library's floating point (mpf) functions.
30.72 KB  
Programming  -  Net::Wire10 1.08
Net::Wire10 is a Pure Perl connector that talks to Sphinx, MySQL and Drizzle servers. Net::Wire10 implements the low-level network protocol, alias the MySQL wire protocol version 10, necessary for talking to one of the aforementioned...
30.72 KB  
Programming  -  logilab-common 0.56.2
a bunch of modules providing low level functionnalities shared among some python projects devel Please note that some of the modules have some extra dependencies. For instance, logilab.common.db will require a db-api 2.0 compliant...
174.08 KB  
Programming  -  OpenSSL for linux 1.0.0a
The OpenSSL Project is a collaborative effort to develop a robust, commercial-grade, full-featured, and Open Source toolkit implementing the Secure Sockets Layer (SSL v2/v3) and Transport Layer Security (TLS v1) protocols as well as a...
3.83 MB  
Libraries  -  wolfSSL 4.0.0
The wolfSSL embedded SSL/TLS library is a lightweight SSL library written in ANSI standard C and targeted for embedded and RTOS environments - primarily because of its small size, speed, and feature set. It is commonly used in standard operating...
3.88 MB  
Libraries  -  EuGTK 4.8.9
Makes it easy to develop good- looking, fast, cross-platform programs that run on Linux, OS X, and Windows. Euphoria is a very fast interpreted/compiled language with straight-forward syntax. EuGTK allows programming in a clean, object-oriented...
10.68 MB  
Libraries  -  Linux User Group Library Manager 1.0
The LUG Library Manager is a project to help Linux User Groups start their own library. A LUG library is helpful to the community at large because it increases access to information, and gives everyone the opportunity to become more knowledgeable.
5.35 KB  
Libraries  -  Module::MakefilePL::Parse 0.12
Module::MakefilePL::Parse is a Perl module to parse required modules from Makefile.PL. SYNOPSIS use Module::MakefilePL::Parse; open $fh, Makefile.PL; $parser = Module::MakefilePL::Parse->new( join("", ) ); $info = $parser->required;...
8.19 KB  
Libraries  -  sqlpp 0.06
sqlpp Perl package is a SQL preprocessor. sqlpp is a conventional cpp-alike preprocessor taught to understand SQL ( PgSQL, in particular) syntax specificities. In addition to the standard #define/#ifdef/#else/#endif cohort, provides also...
10.24 KB