PPI::Lexer - The PPI Lexer
use PPI; # Create a new Lexer my $Lexer = PPI::Lexer->new; # Build a PPI::Document object from a Token stream my $Tokenizer = PPI::Tokenizer->load( 'My/Module.pm' ); my $Document = $Lexer->lex_tokenizer( $Tokenizer ); # Build a PPI::Document object for some raw source my $source = File::Slurp::read_file( 'My/Module.pm' ); $Document = $Lexer->lex_source( $source ); # Build a PPI::Document object for a particular file name $Document = $Lexer->lex_file( 'My/Module.pm' );
The is the PPI Lexer. In the larger scheme of things, its job is to take token streams, in a variety of forms, and "lex" them into nested structures.
Pretty much everything in this module happens behind the scenes at this point. In fact, at the moment you don't really need to instantiate the lexer at all, the three main methods will auto-instantiate themselves a PPI::Lexer object as needed.
All methods do a one-shot "lex this and give me a PPI::Document object".
The new constructor creates a new PPI::Lexer object. The object itself is merely used to hold various buffers and state data during the lexing process, and holds no significant data between ->lex_xxxxx calls.
new
Returns a new PPI::Lexer object
The lex_file method takes a filename as argument. It then loads the file, creates a PPI::Tokenizer for the content and lexes the token stream produced by the tokenizer. Basically, a sort of all-in-one method for getting a PPI::Document object from a file name.
lex_file
Returns a PPI::Document object, or undef on error.
undef
The lex_source method takes a normal scalar string as argument. It creates a PPI::Tokenizer object for the string, and then lexes the resulting token stream.
lex_source
The lex_tokenizer takes as argument a PPI::Tokenizer object. It lexes the token stream from the tokenizer into a PPI::Document object.
lex_tokenizer
- Add optional support for some of the more common soure filters
Bugs should be reported via the CPAN bug tracker at
http://rt.cpan.org/NoAuth/ReportBug.html?Queue=PPI
For other issues, or commercial enhancement or support, contact the author.
Adam Kennedy (Maintainer), http://ali.as/, cpan@ali.as
PPI, PPI::Manual
Copyright 2004 - 2005 Adam Kennedy. All rights reserved. This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.
The full text of the license can be found in the LICENSE file included with this module.
To install PPI, copy and paste the appropriate command in to your terminal.
cpanm
cpanm PPI
CPAN shell
perl -MCPAN -e shell install PPI
For more information on module installation, please visit the detailed CPAN module installation guide.