NAME¶
HTML::Mason::Lexer - Generates events based on component source lexing
VERSION¶
version 1.54
SYNOPSIS¶
my $lexer = HTML::Mason::Lexer->new;
$lexer->lex( comp_source => $source, name => $comp_name, compiler => $compiler );
DESCRIPTION¶
The Lexer works in tandem with the Compiler to turn Mason component source into
something else, generally Perl code.
As the lexer finds component elements, like a tag or block, it calls the
appropriate event methods in the compiler object it was given.
It has only a few public methods.
You can replace this lexer with one of your own simply by telling the Compiler
to use a different lexer class. Your lexer class simply needs to call the
appropriate methods in the Component Class's API as it scans the source.
METHODS¶
The lexer has very few public methods.
- new
- This method creates a new Lexer object. This methods takes no
parameters.
- lex ( comp_source => ..., name => ..., compiler => ... )
- This method tells the lexer to start scanning the given component source.
All of these parameters are required. The "name" parameter will
be used in any error messages generated during lexing. The
"compiler" object must be an object that implements the Mason
Component API.
- line_number
- The current line number that the lexer has reached.
- name
- The name of the component currently being lexed.
- throw_syntax_error ($error)
- This throws an "HTML::Mason::Exception::Syntax" error with the
given error message as well as additional information about the component
source.
This method is used by both the Lexer and the Compiler.
SUBCLASSING¶
Any subclass of the lexer should declare itself to be a subclass of
"HTML::Mason::Lexer", even if it plans to override all of its public
methods.
If you want your subclass to work with the existing Compiler classes in Mason,
you must implement the methods listed above. If you plan to use a custom
Compiler class that you're writing, you can do whatever you want.
We recommend that any parameters you add to Lexer be read-only, because the
compiler object_id is only computed once on creation and would not reflect any
changes to Lexer parameters.
SEE ALSO¶
Mason
AUTHORS¶
- •
- Jonathan Swartz <swartz@pobox.com>
- •
- Dave Rolsky <autarch@urth.org>
- •
- Ken Williams <ken@mathforum.org>
COPYRIGHT AND LICENSE¶
This software is copyright (c) 2012 by Jonathan Swartz.
This is free software; you can redistribute it and/or modify it under the same
terms as the Perl 5 programming language system itself.