PPI::Lexer - The PPI Lexer |
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 = "print 'Hello World!'; kill(Humans->all);"; $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 the PPI::Document manpage object''.
In fact, if you are reading this, what you probably want to do is to just ``load a document'', in which case you can do this in a much more direct and concise manner with one of the following.
use PPI; $Document = PPI::Document->load( $filename ); $Document = PPI::Document->new( $string );
See the PPI::Document manpage for more details.
For more unusual tasks, by all means forge onwards.
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.
Returns a new PPI::Lexer
object
The lex_file
method takes a filename as argument. It then loads the file,
creates a the PPI::Tokenizer manpage for the content and lexes the token stream
produced by the tokenizer. Basically, a sort of all-in-one method for
getting a the PPI::Document manpage object from a file name.
Returns a the PPI::Document manpage object, or undef
on error.
The lex_source
method takes a normal scalar string as argument. It
creates a the PPI::Tokenizer manpage object for the string, and then lexes the
resulting token stream.
Returns a the PPI::Document manpage object, or undef
on error.
The lex_tokenizer
takes as argument a the PPI::Tokenizer manpage object. It
lexes the token stream from the tokenizer into a the PPI::Document manpage object.
Returns a the PPI::Document manpage object, or undef
on error.
For any error that occurs, you can use the errstr
, as either
a static or object method, to access the error message.
If no error occurs for any particular action, errstr
will return false.
- Add optional support for some of the more common source filters
- Some additional checks for blessing things into various Statement and Structure subclasses.
See the support section in the main module.
Adam Kennedy <adamk@cpan.org>
Copyright 2001 - 2006 Adam Kennedy.
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.
PPI::Lexer - The PPI Lexer |