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

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

Serving Software Downloads in 976 Categories, Downloaded 30.075.349 Times

B::Deparse 5.8.8

  Date Added: April 16, 2010  |  Visits: 685

B::Deparse

Report Broken Link
Printer Friendly Version


Product Homepage
Download (70 downloads)

B::Deparse is a Perl compiler backend to produce perl code. SYNOPSIS perl -MO=Deparse[,-d][,-fFILE][,-p][,-q][,-l] [,-sLETTERS][,-xLEVEL] prog.pl B::Deparse is a backend module for the Perl compiler that generates perl source code, based on the internal compiled structure that perl itself creates after parsing a program. The output of B::Deparse wont be exactly the same as the original source, since perl doesnt keep track of comments or whitespace, and there isnt a one-to-one correspondence between perls syntactical constructions and their compiled form, but it will often be close. When you use the -p option, the output also includes parentheses even when they are not required by precedence, which can make it easy to see if perl is parsing your expressions the way you intended. While B::Deparse goes to some lengths to try to figure out what your original program was doing, some parts of the language can still trip it up; it still fails even on some parts of Perls own test suite. If you encounter a failure other than the most common ones described in the BUGS section below, you can help contribute to B::Deparses ongoing development by submitting a bug report with a small example. OPTIONS As with all compiler backend options, these must follow directly after the -MO=Deparse, separated by a comma but not any white space. -d Output data values (when they appear as constants) using Data::Dumper. Without this option, B::Deparse will use some simple routines of its own for the same purpose. Currently, Data::Dumper is better for some kinds of data (such as complex structures with sharing and self-reference) while the built-in routines are better for others (such as odd floating-point values). -fFILE Normally, B::Deparse deparses the main code of a program, and all the subs defined in the same file. To include subs defined in other files, pass the -f option with the filename. You can pass the -f option several times, to include more than one secondary file. (Most of the time you dont want to use it at all.) You can also use this option to include subs which are defined in the scope of a #line directive with two parameters. -l Add #line declarations to the output based on the line and file locations of the original code. -p Print extra parentheses. Without this option, B::Deparse includes parentheses in its output only when they are needed, based on the structure of your program. With -p, it uses parentheses (almost) whenever they would be legal. This can be useful if you are used to LISP, or if you want to see how perl parses your input. If you say if ($var & 0x7f == 65) {print "Gimme an A!"} print ($which ? $a : $b), "n"; $name = $ENV{USER} or "Bob"; B::Deparse,-p will print if (($var & 0)) { print(Gimme an A!) }; (print(($which ? $a : $b)), ???); (($name = $ENV{USER}) or ???) which probably isnt what you intended (the ??? is a sign that perl optimized away a constant value). -P Disable prototype checking. With this option, all function calls are deparsed as if no prototype was defined for them. In other words, perl -MO=Deparse,-P -e sub foo (@) { 1 } foo @x will print sub foo (@) { 1; } &foo(@x); making clear how the parameters are actually passed to foo. -q Expand double-quoted strings into the corresponding combinations of concatenation, uc, ucfirst, lc, lcfirst, quotemeta, and join. For instance, print print "Hello, $world, @ladies, u$gentlemenE, uL$me!"; as print Hello, . $world . , . join($", @ladies) . , . ucfirst($gentlemen) . , . ucfirst(lc $me . !); Note that the expanded form represents the way perl handles such constructions internally -- this option actually turns off the reverse translation that B::Deparse usually does. On the other hand, note that $x = "$y" is not the same as $x = $y: the former makes the value of $y into a string before doing the assignment. -sLETTERS Tweak the style of B::Deparses output. The letters should follow directly after the s, with no space or punctuation. The following options are available: C Cuddle elsif, else, and continue blocks. For example, print if (...) { ... } else { ... } instead of if (...) { ... } else { ... } The default is not to cuddle. iNUMBER Indent lines by multiples of NUMBER columns. The default is 4 columns. T Use tabs for each 8 columns of indent. The default is to use only spaces. For instance, if the style options are -si4T, a line thats indented 3 times will be preceded by one tab and four spaces; if the options were -si8T, the same line would be preceded by three tabs. vSTRING. Print STRING for the value of a constant that cant be determined because it was optimized away (mnemonic: this happens when a constant is used in void context). The end of the string is marked by a period. The string should be a valid perl expression, generally a constant. Note that unless its a number, it probably needs to be quoted, and on a command line quotes need to be protected from the shell. Some conventional values include 0, 1, 42, , foo, and Useless use of constant omitted (which may need to be -sv"Useless use of constant omitted." or something similar depending on your shell). The default is ???. If youre using B::Deparse on a module or other file thats required, you shouldnt use a value that evaluates to false, since the customary true constant at the end of a module will be in void context when the file is compiled as a main program. -xLEVEL Expand conventional syntax constructions into equivalent ones that expose their internal operation. LEVEL should be a digit, with higher values meaning more expansion. As with -q, this actually involves turning off special cases in B::Deparses normal operations. If LEVEL is at least 3, for loops will be translated into equivalent while loops with continue blocks; for instance for ($i = 0; $i < 10; ++$i) { print $i; } turns into $i = 0; while ($i < 10) { print $i; } continue { ++$i } Note that in a few cases this translation cant be perfectly carried back into the source code -- if the loops initializer declares a my variable, for instance, it wont have the correct scope outside of the loop. If LEVEL is at least 5, use declarations will be translated into BEGIN blocks containing calls to require and import; for instance, use strict refs; turns into sub BEGIN { require strict; do { strict->import(refs) }; } If LEVEL is at least 7, if statements will be translated into equivalent expressions using &&, ?: and do {}; for instance print hi if $nice; if ($nice) { print hi; } if ($nice) { print hi; } else { print bye; } turns into $nice and print hi; $nice and do { print hi }; $nice ? do { print hi } : do { print bye }; Long sequences of elsifs will turn into nested ternary operators, which B::Deparse doesnt know how to indent nicely..

Requirements: No special requirements
Platforms: Linux
Keyword: Bdeparse Constant For Instance If Level Level Libraries Mo Nice Option Output Perl Print Programming Will Be
Users rating: 0/10

License: Freeware Size: 12.2 MB
B::DEPARSE RELATED
Utilities  -  Busy Cupid 1.0
Have you been wandering around in the tedious days, trying hard to amuse yourself with some random playful shots, little Cupid? Finally it's time to do the lonely hearts a favor in Valentine's Day! In the park of romance, the bachelors and...
163.84 KB  
Utilities  -  Cheater for Hanging with Friends 2.1
DOWNLOAD NOW - FREE TODAY! WIN AT HANGING WITH FRIENDS EVERY TIME! Use your letter tiles to create IMPOSSIBLE words for your opponent. For instance, if your letter tiles are TDQXZEUGCDQARSTP, the app will show you words...
8.5 MB  
Games  -  Puzzle Zombie - Challenging Brain Strategy Game Full of Zombies 1.1
If you are a strategist who loves a challenge, and a person looking for hours of fun that gets your juices flowing, you will absolutely love this intelligent game. And if you are into Zombies, stimulating music and surprise intrigue, you will be...
52.3 MB  
Productivity  -  Magnetic Declination 1.2.0.0
Magnetic Declination is the angle of difference between true North and magnetic North. For instance, if the declination at a certain point were 10 W, then a compass at that location pointing north (magnetic) would actually align 10 W of true...
1024 KB  
Productivity  -  My Range Compensator 1.1.0.0
MyRangeCompensator is a simple app that will help you adjust for angle range compensation. Most range finders do not compensate for the angle. For instance if you have your range finder at a 20 degree angle and your target is 200 yards away, the...
1024 KB  
Lifestyle  -  Poo Counter 1.0.0.0
Tracks your new-born baby's Poo and wee for health care. There are some numbers for Poos and wees for various ages of babies. For instance if your baby is doing Poo more than 5, it means he/she is getting enough feed. NOTE: This is just a...
1024 KB  
Games  -  3D Balancing Ball 2 1.1
3D balancing Ball 2 is a physics base balancing game. You have to control the ball by tilt of the phone and make it to cross a path to clear the level. Ball must not fall down, is ball falls, game will be over. Make the ball jump by swipe up to...
34.7 MB  
Education  -  Puzzle for Kids - Puzzle Land 1.0
Puzzle Land is a one-of-a-kind, INNOVATIVE childrens game that will entertain even the fussiest children for hours on end. If youre looking for the best kids game on the iPhone - look no further.... Your kids will be completely IMMERSED in...
94 MB  
Games  -  Touch The Shobon 1.0
This is simple game to find specified characters amongst other ones.There are two level stages normal and hard. In the normal stage , you will be able to measure , such like a your reflex nerve , and the other one stage will provide you a power...
3 MB  
Modules  -  WP Mailman Integration 1.0
If mailman runs on the same host as WordPress, its list will be available to the blog admin for selection.Newly registered users will be subscribed to the selected list(s). InstallationUnpack and upload it to the /wp-content/plugins/...
 
NEW DOWNLOADS IN PROGRAMMING, LIBRARIES
Programming  -  FLEX-db Digital Asset Manager 3.0.9
FLEX-db - an enterprise Digital Asset Manager (DAM). It ingests and links metadata with files, creates thumbnails, and processes files using business rules. FLEX-db has a JSP client, Java app server for file input and output and an EJB metadata...
21.57 MB  
Programming  -  Libicom 0.9.0
The libicom library is a character based dynamicly linked library for Linux. It is used to remotely control the Icom IC-R8500 wide band receiver via an RS232 link. All call and return parameters to the control functions are character string based....
20.48 KB  
Programming  -  dotdesktop 0.3
Dotdesktop library provides ability to parse desktop entry file and access the information in a convenient way. Desktop entry file format is defined by freedesktop.org, it is used to describe information about an application such as the name and...
327.68 KB  
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  -  libyasl 0.2
Libyasl is a C++ class library to easily realize TCP/UDP/Multicast clientsand servers in IPv4 and IPv6 environments under GNU/Linux systems.
143.36 KB  
Libraries  -  wolfSSL 3.12.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...
2.73 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