Add built local::lib
[catagits/Gitalist.git] / local-lib5 / man / man3 / PPI::Lexer.3pm
1 .\" Automatically generated by Pod::Man 2.22 (Pod::Simple 3.10)
2 .\"
3 .\" Standard preamble:
4 .\" ========================================================================
5 .de Sp \" Vertical space (when we can't use .PP)
6 .if t .sp .5v
7 .if n .sp
8 ..
9 .de Vb \" Begin verbatim text
10 .ft CW
11 .nf
12 .ne \\$1
13 ..
14 .de Ve \" End verbatim text
15 .ft R
16 .fi
17 ..
18 .\" Set up some character translations and predefined strings.  \*(-- will
19 .\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left
20 .\" double quote, and \*(R" will give a right double quote.  \*(C+ will
21 .\" give a nicer C++.  Capital omega is used to do unbreakable dashes and
22 .\" therefore won't be available.  \*(C` and \*(C' expand to `' in nroff,
23 .\" nothing in troff, for use with C<>.
24 .tr \(*W-
25 .ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
26 .ie n \{\
27 .    ds -- \(*W-
28 .    ds PI pi
29 .    if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch
30 .    if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\"  diablo 12 pitch
31 .    ds L" ""
32 .    ds R" ""
33 .    ds C` ""
34 .    ds C' ""
35 'br\}
36 .el\{\
37 .    ds -- \|\(em\|
38 .    ds PI \(*p
39 .    ds L" ``
40 .    ds R" ''
41 'br\}
42 .\"
43 .\" Escape single quotes in literal strings from groff's Unicode transform.
44 .ie \n(.g .ds Aq \(aq
45 .el       .ds Aq '
46 .\"
47 .\" If the F register is turned on, we'll generate index entries on stderr for
48 .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index
49 .\" entries marked with X<> in POD.  Of course, you'll have to process the
50 .\" output yourself in some meaningful fashion.
51 .ie \nF \{\
52 .    de IX
53 .    tm Index:\\$1\t\\n%\t"\\$2"
54 ..
55 .    nr % 0
56 .    rr F
57 .\}
58 .el \{\
59 .    de IX
60 ..
61 .\}
62 .\"
63 .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
64 .\" Fear.  Run.  Save yourself.  No user-serviceable parts.
65 .    \" fudge factors for nroff and troff
66 .if n \{\
67 .    ds #H 0
68 .    ds #V .8m
69 .    ds #F .3m
70 .    ds #[ \f1
71 .    ds #] \fP
72 .\}
73 .if t \{\
74 .    ds #H ((1u-(\\\\n(.fu%2u))*.13m)
75 .    ds #V .6m
76 .    ds #F 0
77 .    ds #[ \&
78 .    ds #] \&
79 .\}
80 .    \" simple accents for nroff and troff
81 .if n \{\
82 .    ds ' \&
83 .    ds ` \&
84 .    ds ^ \&
85 .    ds , \&
86 .    ds ~ ~
87 .    ds /
88 .\}
89 .if t \{\
90 .    ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u"
91 .    ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u'
92 .    ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u'
93 .    ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u'
94 .    ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u'
95 .    ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u'
96 .\}
97 .    \" troff and (daisy-wheel) nroff accents
98 .ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V'
99 .ds 8 \h'\*(#H'\(*b\h'-\*(#H'
100 .ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#]
101 .ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H'
102 .ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u'
103 .ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#]
104 .ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#]
105 .ds ae a\h'-(\w'a'u*4/10)'e
106 .ds Ae A\h'-(\w'A'u*4/10)'E
107 .    \" corrections for vroff
108 .if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u'
109 .if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u'
110 .    \" for low resolution devices (crt and lpr)
111 .if \n(.H>23 .if \n(.V>19 \
112 \{\
113 .    ds : e
114 .    ds 8 ss
115 .    ds o a
116 .    ds d- d\h'-1'\(ga
117 .    ds D- D\h'-1'\(hy
118 .    ds th \o'bp'
119 .    ds Th \o'LP'
120 .    ds ae ae
121 .    ds Ae AE
122 .\}
123 .rm #[ #] #H #V #F C
124 .\" ========================================================================
125 .\"
126 .IX Title "PPI::Lexer 3"
127 .TH PPI::Lexer 3 "2009-08-08" "perl v5.8.7" "User Contributed Perl Documentation"
128 .\" For nroff, turn off justification.  Always turn off hyphenation; it makes
129 .\" way too many mistakes in technical documents.
130 .if n .ad l
131 .nh
132 .SH "NAME"
133 PPI::Lexer \- The PPI Lexer
134 .SH "SYNOPSIS"
135 .IX Header "SYNOPSIS"
136 .Vb 1
137 \&  use PPI;
138 \&  
139 \&  # Create a new Lexer
140 \&  my $Lexer = PPI::Lexer\->new;
141 \&  
142 \&  # Build a PPI::Document object from a Token stream
143 \&  my $Tokenizer = PPI::Tokenizer\->load(\*(AqMy/Module.pm\*(Aq);
144 \&  my $Document = $Lexer\->lex_tokenizer($Tokenizer);
145 \&  
146 \&  # Build a PPI::Document object for some raw source
147 \&  my $source = "print \*(AqHello World!\*(Aq; kill(Humans\->all);";
148 \&  $Document = $Lexer\->lex_source($source);
149 \&  
150 \&  # Build a PPI::Document object for a particular file name
151 \&  $Document = $Lexer\->lex_file(\*(AqMy/Module.pm\*(Aq);
152 .Ve
153 .SH "DESCRIPTION"
154 .IX Header "DESCRIPTION"
155 The is the \s-1PPI\s0 Lexer. In the larger scheme of things, its job is to take
156 token streams, in a variety of forms, and \*(L"lex\*(R" them into nested structures.
157 .PP
158 Pretty much everything in this module happens behind the scenes at this
159 point. In fact, at the moment you don't really need to instantiate the lexer
160 at all, the three main methods will auto-instantiate themselves a
161 \&\f(CW\*(C`PPI::Lexer\*(C'\fR object as needed.
162 .PP
163 All methods do a one-shot "lex this and give me a PPI::Document object".
164 .PP
165 In fact, if you are reading this, what you \fBprobably\fR want to do is to
166 just \*(L"load a document\*(R", in which case you can do this in a much more
167 direct and concise manner with one of the following.
168 .PP
169 .Vb 1
170 \&  use PPI;
171 \&  
172 \&  $Document = PPI::Document\->load( $filename );
173 \&  $Document = PPI::Document\->new( $string );
174 .Ve
175 .PP
176 See PPI::Document for more details.
177 .PP
178 For more unusual tasks, by all means forge onwards.
179 .SH "METHODS"
180 .IX Header "METHODS"
181 .SS "new"
182 .IX Subsection "new"
183 The \f(CW\*(C`new\*(C'\fR constructor creates a new \f(CW\*(C`PPI::Lexer\*(C'\fR object. The object itself
184 is merely used to hold various buffers and state data during the lexing
185 process, and holds no significant data between \->lex_xxxxx calls.
186 .PP
187 Returns a new \f(CW\*(C`PPI::Lexer\*(C'\fR object
188 .ie n .SS "lex_file $filename"
189 .el .SS "lex_file \f(CW$filename\fP"
190 .IX Subsection "lex_file $filename"
191 The \f(CW\*(C`lex_file\*(C'\fR method takes a filename as argument. It then loads the file,
192 creates a PPI::Tokenizer for the content and lexes the token stream
193 produced by the tokenizer. Basically, a sort of all-in-one method for
194 getting a PPI::Document object from a file name.
195 .PP
196 Returns a PPI::Document object, or \f(CW\*(C`undef\*(C'\fR on error.
197 .ie n .SS "lex_source $string"
198 .el .SS "lex_source \f(CW$string\fP"
199 .IX Subsection "lex_source $string"
200 The \f(CW\*(C`lex_source\*(C'\fR method takes a normal scalar string as argument. It
201 creates a PPI::Tokenizer object for the string, and then lexes the
202 resulting token stream.
203 .PP
204 Returns a PPI::Document object, or \f(CW\*(C`undef\*(C'\fR on error.
205 .ie n .SS "lex_tokenizer $Tokenizer"
206 .el .SS "lex_tokenizer \f(CW$Tokenizer\fP"
207 .IX Subsection "lex_tokenizer $Tokenizer"
208 The \f(CW\*(C`lex_tokenizer\*(C'\fR takes as argument a PPI::Tokenizer object. It
209 lexes the token stream from the tokenizer into a PPI::Document object.
210 .PP
211 Returns a PPI::Document object, or \f(CW\*(C`undef\*(C'\fR on error.
212 .SS "errstr"
213 .IX Subsection "errstr"
214 For any error that occurs, you can use the \f(CW\*(C`errstr\*(C'\fR, as either
215 a static or object method, to access the error message.
216 .PP
217 If no error occurs for any particular action, \f(CW\*(C`errstr\*(C'\fR will return false.
218 .SH "TO DO"
219 .IX Header "TO DO"
220 \&\- Add optional support for some of the more common source filters
221 .PP
222 \&\- Some additional checks for blessing things into various Statement
223 and Structure subclasses.
224 .SH "SUPPORT"
225 .IX Header "SUPPORT"
226 See the support section in the main module.
227 .SH "AUTHOR"
228 .IX Header "AUTHOR"
229 Adam Kennedy <adamk@cpan.org>
230 .SH "COPYRIGHT"
231 .IX Header "COPYRIGHT"
232 Copyright 2001 \- 2009 Adam Kennedy.
233 .PP
234 This program is free software; you can redistribute
235 it and/or modify it under the same terms as Perl itself.
236 .PP
237 The full text of the license can be found in the
238 \&\s-1LICENSE\s0 file included with this module.