14 $key = $newkey{$key} || "op_$key";
25 warn "AUTOLOAD $P5AST::AUTOLOAD(" . join(',', @_) . ")\n";
33 for my $subkid (@$kid) {
34 my $type = ref $subkid;
35 if ($type eq 'ARRAY') {
38 $text .= '〔 '. p5arraytext($subkid) . ' 〕';
41 $text .= p5arraytext($subkid);
44 elsif ($type =~ /^p5::/) {
45 my $newtext = $subkid->enc();
46 if ($::herequeue && $newtext =~ s/\n/\n$::herequeue/) {
52 $text .= $subkid->text(@_);
63 # my $pre = $self->pretext();
64 # my $post = $self->posttext();
66 foreach my $kid (@{$$self{Kids}}) {
68 if ($type eq 'ARRAY') {
69 $text .= p5arraytext($kid);
71 elsif ($type =~ /^p5::/) {
72 my $newtext = $kid->enc();
73 if ($::herequeue && $newtext =~ s/\n/\n$::herequeue/) {
79 $text .= $kid->p5text(@_);
81 elsif (defined $kid) {
85 $text .= '[[[ UNDEF ]]]';
94 foreach my $kid (@{$$self{Kids}}) {
95 my $text = $kid->p5text(@_);
96 push @text, $text if defined $text;
102 return $_[0]->p5text(); # assume it's the same
105 package P5AST::heredoc; @ISA = 'P5AST';
111 local $::herequeue; # don't interpolate outer heredoc yet
112 $newdoc = $self->{doc}->p5text(@_) . $self->{end}->enc();
113 if ($::herequeue) { # heredoc within the heredoc?
114 $newdoc .= $::herequeue;
118 $::herequeue .= $newdoc;
119 my $start = $self->{start};
120 my $type = ref $start;
121 if ($type =~ /^p5::/) { # XXX too much cut-n-paste here...
122 return $start->enc();
125 return $start->p5text(@_);
137 warn "Shouldn't have a node of type $t";
140 package P5AST::baseop; @ISA = 'P5AST';
141 package P5AST::baseop_unop; @ISA = 'P5AST::baseop';
142 package P5AST::binop; @ISA = 'P5AST::baseop';
143 package P5AST::cop; @ISA = 'P5AST::baseop';
144 package P5AST::filestatop; @ISA = 'P5AST::baseop';
145 package P5AST::listop; @ISA = 'P5AST::baseop';
146 package P5AST::logop; @ISA = 'P5AST::baseop';
147 package P5AST::loop; @ISA = 'P5AST::baseop';
148 package P5AST::loopexop; @ISA = 'P5AST::baseop';
149 package P5AST::padop; @ISA = 'P5AST::baseop';
150 package P5AST::padop_svop; @ISA = 'P5AST::baseop';
151 package P5AST::pmop; @ISA = 'P5AST::baseop';
152 package P5AST::pvop_svop; @ISA = 'P5AST::baseop';
153 package P5AST::unop; @ISA = 'P5AST::baseop';
157 package P5AST::op_null; @ISA = 'P5AST::baseop';
158 package P5AST::op_stub; @ISA = 'P5AST::baseop';
159 package P5AST::op_scalar; @ISA = 'P5AST::baseop_unop';
163 package P5AST::op_pushmark; @ISA = 'P5AST::baseop';
164 package P5AST::op_wantarray; @ISA = 'P5AST::baseop';
165 package P5AST::op_const; @ISA = 'P5AST::padop_svop';
166 package P5AST::op_gvsv; @ISA = 'P5AST::padop_svop';
167 package P5AST::op_gv; @ISA = 'P5AST::padop_svop';
168 package P5AST::op_gelem; @ISA = 'P5AST::binop';
169 package P5AST::op_padsv; @ISA = 'P5AST::baseop';
170 package P5AST::op_padav; @ISA = 'P5AST::baseop';
171 package P5AST::op_padhv; @ISA = 'P5AST::baseop';
172 package P5AST::op_padany; @ISA = 'P5AST::baseop';
173 package P5AST::op_pushre; @ISA = 'P5AST::pmop';
174 package P5AST::op_rv2gv; @ISA = 'P5AST::unop';
175 package P5AST::op_rv2sv; @ISA = 'P5AST::unop';
176 package P5AST::op_av2arylen; @ISA = 'P5AST::unop';
177 package P5AST::op_rv2cv; @ISA = 'P5AST::unop';
178 package P5AST::op_anoncode; @ISA = 'P5AST::padop_svop';
179 package P5AST::op_prototype; @ISA = 'P5AST::baseop_unop';
180 package P5AST::op_refgen; @ISA = 'P5AST::unop';
181 package P5AST::op_srefgen; @ISA = 'P5AST::unop';
182 package P5AST::op_ref; @ISA = 'P5AST::baseop_unop';
183 package P5AST::op_bless; @ISA = 'P5AST::listop';
184 package P5AST::op_backtick; @ISA = 'P5AST::baseop_unop';
185 package P5AST::op_glob; @ISA = 'P5AST::listop';
186 package P5AST::op_readline; @ISA = 'P5AST::baseop_unop';
187 package P5AST::op_rcatline; @ISA = 'P5AST::padop_svop';
188 package P5AST::op_regcmaybe; @ISA = 'P5AST::unop';
189 package P5AST::op_regcreset; @ISA = 'P5AST::unop';
190 package P5AST::op_regcomp; @ISA = 'P5AST::logop';
191 package P5AST::op_match; @ISA = 'P5AST::pmop';
192 package P5AST::op_qr; @ISA = 'P5AST::pmop';
193 package P5AST::op_subst; @ISA = 'P5AST::pmop';
194 package P5AST::op_substcont; @ISA = 'P5AST::logop';
195 package P5AST::op_trans; @ISA = 'P5AST::pvop_svop';
196 package P5AST::op_sassign; @ISA = 'P5AST::baseop';
197 package P5AST::op_aassign; @ISA = 'P5AST::binop';
198 package P5AST::op_chop; @ISA = 'P5AST::baseop_unop';
199 package P5AST::op_schop; @ISA = 'P5AST::baseop_unop';
200 package P5AST::op_chomp; @ISA = 'P5AST::baseop_unop';
201 package P5AST::op_schomp; @ISA = 'P5AST::baseop_unop';
202 package P5AST::op_defined; @ISA = 'P5AST::baseop_unop';
203 package P5AST::op_undef; @ISA = 'P5AST::baseop_unop';
204 package P5AST::op_study; @ISA = 'P5AST::baseop_unop';
205 package P5AST::op_pos; @ISA = 'P5AST::baseop_unop';
206 package P5AST::op_preinc; @ISA = 'P5AST::unop';
207 package P5AST::op_i_preinc; @ISA = 'P5AST::unop';
208 package P5AST::op_predec; @ISA = 'P5AST::unop';
209 package P5AST::op_i_predec; @ISA = 'P5AST::unop';
210 package P5AST::op_postinc; @ISA = 'P5AST::unop';
211 package P5AST::op_i_postinc; @ISA = 'P5AST::unop';
212 package P5AST::op_postdec; @ISA = 'P5AST::unop';
213 package P5AST::op_i_postdec; @ISA = 'P5AST::unop';
214 package P5AST::op_pow; @ISA = 'P5AST::binop';
215 package P5AST::op_multiply; @ISA = 'P5AST::binop';
216 package P5AST::op_i_multiply; @ISA = 'P5AST::binop';
217 package P5AST::op_divide; @ISA = 'P5AST::binop';
218 package P5AST::op_i_divide; @ISA = 'P5AST::binop';
219 package P5AST::op_modulo; @ISA = 'P5AST::binop';
220 package P5AST::op_i_modulo; @ISA = 'P5AST::binop';
221 package P5AST::op_repeat; @ISA = 'P5AST::binop';
222 package P5AST::op_add; @ISA = 'P5AST::binop';
223 package P5AST::op_i_add; @ISA = 'P5AST::binop';
224 package P5AST::op_subtract; @ISA = 'P5AST::binop';
225 package P5AST::op_i_subtract; @ISA = 'P5AST::binop';
226 package P5AST::op_concat; @ISA = 'P5AST::binop';
227 package P5AST::op_stringify; @ISA = 'P5AST::listop';
228 package P5AST::op_left_shift; @ISA = 'P5AST::binop';
229 package P5AST::op_right_shift; @ISA = 'P5AST::binop';
230 package P5AST::op_lt; @ISA = 'P5AST::binop';
231 package P5AST::op_i_lt; @ISA = 'P5AST::binop';
232 package P5AST::op_gt; @ISA = 'P5AST::binop';
233 package P5AST::op_i_gt; @ISA = 'P5AST::binop';
234 package P5AST::op_le; @ISA = 'P5AST::binop';
235 package P5AST::op_i_le; @ISA = 'P5AST::binop';
236 package P5AST::op_ge; @ISA = 'P5AST::binop';
237 package P5AST::op_i_ge; @ISA = 'P5AST::binop';
238 package P5AST::op_eq; @ISA = 'P5AST::binop';
239 package P5AST::op_i_eq; @ISA = 'P5AST::binop';
240 package P5AST::op_ne; @ISA = 'P5AST::binop';
241 package P5AST::op_i_ne; @ISA = 'P5AST::binop';
242 package P5AST::op_ncmp; @ISA = 'P5AST::binop';
243 package P5AST::op_i_ncmp; @ISA = 'P5AST::binop';
244 package P5AST::op_slt; @ISA = 'P5AST::binop';
245 package P5AST::op_sgt; @ISA = 'P5AST::binop';
246 package P5AST::op_sle; @ISA = 'P5AST::binop';
247 package P5AST::op_sge; @ISA = 'P5AST::binop';
248 package P5AST::op_seq; @ISA = 'P5AST::binop';
249 package P5AST::op_sne; @ISA = 'P5AST::binop';
250 package P5AST::op_scmp; @ISA = 'P5AST::binop';
251 package P5AST::op_bit_and; @ISA = 'P5AST::binop';
252 package P5AST::op_bit_xor; @ISA = 'P5AST::binop';
253 package P5AST::op_bit_or; @ISA = 'P5AST::binop';
254 package P5AST::op_negate; @ISA = 'P5AST::unop';
255 package P5AST::op_i_negate; @ISA = 'P5AST::unop';
256 package P5AST::op_not; @ISA = 'P5AST::unop';
257 package P5AST::op_complement; @ISA = 'P5AST::unop';
258 package P5AST::op_atan2; @ISA = 'P5AST::listop';
259 package P5AST::op_sin; @ISA = 'P5AST::baseop_unop';
260 package P5AST::op_cos; @ISA = 'P5AST::baseop_unop';
261 package P5AST::op_rand; @ISA = 'P5AST::baseop_unop';
262 package P5AST::op_srand; @ISA = 'P5AST::baseop_unop';
263 package P5AST::op_exp; @ISA = 'P5AST::baseop_unop';
264 package P5AST::op_log; @ISA = 'P5AST::baseop_unop';
265 package P5AST::op_sqrt; @ISA = 'P5AST::baseop_unop';
266 package P5AST::op_int; @ISA = 'P5AST::baseop_unop';
267 package P5AST::op_hex; @ISA = 'P5AST::baseop_unop';
268 package P5AST::op_oct; @ISA = 'P5AST::baseop_unop';
269 package P5AST::op_abs; @ISA = 'P5AST::baseop_unop';
270 package P5AST::op_length; @ISA = 'P5AST::baseop_unop';
271 package P5AST::op_substr; @ISA = 'P5AST::listop';
272 package P5AST::op_vec; @ISA = 'P5AST::listop';
273 package P5AST::op_index; @ISA = 'P5AST::listop';
274 package P5AST::op_rindex; @ISA = 'P5AST::listop';
275 package P5AST::op_sprintf; @ISA = 'P5AST::listop';
276 package P5AST::op_formline; @ISA = 'P5AST::listop';
277 package P5AST::op_ord; @ISA = 'P5AST::baseop_unop';
278 package P5AST::op_chr; @ISA = 'P5AST::baseop_unop';
279 package P5AST::op_crypt; @ISA = 'P5AST::listop';
280 package P5AST::op_ucfirst; @ISA = 'P5AST::baseop_unop';
281 package P5AST::op_lcfirst; @ISA = 'P5AST::baseop_unop';
282 package P5AST::op_uc; @ISA = 'P5AST::baseop_unop';
283 package P5AST::op_lc; @ISA = 'P5AST::baseop_unop';
284 package P5AST::op_quotemeta; @ISA = 'P5AST::baseop_unop';
285 package P5AST::op_rv2av; @ISA = 'P5AST::unop';
286 package P5AST::op_aelemfast; @ISA = 'P5AST::padop_svop';
287 package P5AST::op_aelem; @ISA = 'P5AST::binop';
288 package P5AST::op_aslice; @ISA = 'P5AST::listop';
289 package P5AST::op_each; @ISA = 'P5AST::baseop_unop';
290 package P5AST::op_values; @ISA = 'P5AST::baseop_unop';
291 package P5AST::op_keys; @ISA = 'P5AST::baseop_unop';
292 package P5AST::op_delete; @ISA = 'P5AST::baseop_unop';
293 package P5AST::op_exists; @ISA = 'P5AST::baseop_unop';
294 package P5AST::op_rv2hv; @ISA = 'P5AST::unop';
295 package P5AST::op_helem; @ISA = 'P5AST::listop';
296 package P5AST::op_hslice; @ISA = 'P5AST::listop';
297 package P5AST::op_unpack; @ISA = 'P5AST::listop';
298 package P5AST::op_pack; @ISA = 'P5AST::listop';
299 package P5AST::op_split; @ISA = 'P5AST::listop';
300 package P5AST::op_join; @ISA = 'P5AST::listop';
301 package P5AST::op_list; @ISA = 'P5AST::listop';
302 package P5AST::op_lslice; @ISA = 'P5AST::binop';
303 package P5AST::op_anonlist; @ISA = 'P5AST::listop';
304 package P5AST::op_anonhash; @ISA = 'P5AST::listop';
305 package P5AST::op_splice; @ISA = 'P5AST::listop';
306 package P5AST::op_push; @ISA = 'P5AST::listop';
307 package P5AST::op_pop; @ISA = 'P5AST::baseop_unop';
308 package P5AST::op_shift; @ISA = 'P5AST::baseop_unop';
309 package P5AST::op_unshift; @ISA = 'P5AST::listop';
310 package P5AST::op_sort; @ISA = 'P5AST::listop';
311 package P5AST::op_reverse; @ISA = 'P5AST::listop';
312 package P5AST::op_grepstart; @ISA = 'P5AST::listop';
313 package P5AST::op_grepwhile; @ISA = 'P5AST::logop';
314 package P5AST::op_mapstart; @ISA = 'P5AST::listop';
315 package P5AST::op_mapwhile; @ISA = 'P5AST::logop';
316 package P5AST::op_range; @ISA = 'P5AST::logop';
317 package P5AST::op_flip; @ISA = 'P5AST::unop';
318 package P5AST::op_flop; @ISA = 'P5AST::unop';
319 package P5AST::op_and; @ISA = 'P5AST::logop';
320 package P5AST::op_or; @ISA = 'P5AST::logop';
321 package P5AST::op_xor; @ISA = 'P5AST::binop';
322 package P5AST::op_cond_expr; @ISA = 'P5AST::logop';
323 package P5AST::op_andassign; @ISA = 'P5AST::logop';
324 package P5AST::op_orassign; @ISA = 'P5AST::logop';
325 package P5AST::op_method; @ISA = 'P5AST::unop';
326 package P5AST::op_entersub; @ISA = 'P5AST::unop';
327 package P5AST::op_leavesub; @ISA = 'P5AST::unop';
328 package P5AST::op_leavesublv; @ISA = 'P5AST::unop';
329 package P5AST::op_caller; @ISA = 'P5AST::baseop_unop';
330 package P5AST::op_warn; @ISA = 'P5AST::listop';
331 package P5AST::op_die; @ISA = 'P5AST::listop';
332 package P5AST::op_reset; @ISA = 'P5AST::baseop_unop';
333 package P5AST::op_lineseq; @ISA = 'P5AST::listop';
334 package P5AST::op_nextstate; @ISA = 'P5AST::BAD';
335 package P5AST::op_dbstate; @ISA = 'P5AST::cop';
336 package P5AST::op_unstack; @ISA = 'P5AST::baseop';
337 package P5AST::op_enter; @ISA = 'P5AST::baseop';
338 package P5AST::op_leave; @ISA = 'P5AST::listop';
339 package P5AST::op_scope; @ISA = 'P5AST::listop';
340 package P5AST::op_enteriter; @ISA = 'P5AST::loop';
341 package P5AST::op_iter; @ISA = 'P5AST::baseop';
342 package P5AST::op_enterloop; @ISA = 'P5AST::loop';
343 package P5AST::op_leaveloop; @ISA = 'P5AST::binop';
344 package P5AST::op_return; @ISA = 'P5AST::listop';
345 package P5AST::op_last; @ISA = 'P5AST::loopexop';
346 package P5AST::op_next; @ISA = 'P5AST::loopexop';
347 package P5AST::op_redo; @ISA = 'P5AST::loopexop';
348 package P5AST::op_dump; @ISA = 'P5AST::loopexop';
349 package P5AST::op_goto; @ISA = 'P5AST::loopexop';
350 package P5AST::op_exit; @ISA = 'P5AST::baseop_unop';
351 package P5AST::op_open; @ISA = 'P5AST::listop';
352 package P5AST::op_close; @ISA = 'P5AST::baseop_unop';
353 package P5AST::op_pipe_op; @ISA = 'P5AST::listop';
354 package P5AST::op_fileno; @ISA = 'P5AST::baseop_unop';
355 package P5AST::op_umask; @ISA = 'P5AST::baseop_unop';
356 package P5AST::op_binmode; @ISA = 'P5AST::listop';
357 package P5AST::op_tie; @ISA = 'P5AST::listop';
358 package P5AST::op_untie; @ISA = 'P5AST::baseop_unop';
359 package P5AST::op_tied; @ISA = 'P5AST::baseop_unop';
360 package P5AST::op_dbmopen; @ISA = 'P5AST::listop';
361 package P5AST::op_dbmclose; @ISA = 'P5AST::baseop_unop';
362 package P5AST::op_sselect; @ISA = 'P5AST::listop';
363 package P5AST::op_select; @ISA = 'P5AST::listop';
364 package P5AST::op_getc; @ISA = 'P5AST::baseop_unop';
365 package P5AST::op_read; @ISA = 'P5AST::listop';
366 package P5AST::op_enterwrite; @ISA = 'P5AST::baseop_unop';
367 package P5AST::op_leavewrite; @ISA = 'P5AST::unop';
368 package P5AST::op_prtf; @ISA = 'P5AST::listop';
369 package P5AST::op_print; @ISA = 'P5AST::listop';
370 package P5AST::op_sysopen; @ISA = 'P5AST::listop';
371 package P5AST::op_sysseek; @ISA = 'P5AST::listop';
372 package P5AST::op_sysread; @ISA = 'P5AST::listop';
373 package P5AST::op_syswrite; @ISA = 'P5AST::listop';
374 package P5AST::op_send; @ISA = 'P5AST::listop';
375 package P5AST::op_recv; @ISA = 'P5AST::listop';
376 package P5AST::op_eof; @ISA = 'P5AST::baseop_unop';
377 package P5AST::op_tell; @ISA = 'P5AST::baseop_unop';
378 package P5AST::op_seek; @ISA = 'P5AST::listop';
379 package P5AST::op_truncate; @ISA = 'P5AST::listop';
380 package P5AST::op_fcntl; @ISA = 'P5AST::listop';
381 package P5AST::op_ioctl; @ISA = 'P5AST::listop';
382 package P5AST::op_flock; @ISA = 'P5AST::listop';
383 package P5AST::op_socket; @ISA = 'P5AST::listop';
384 package P5AST::op_sockpair; @ISA = 'P5AST::listop';
385 package P5AST::op_bind; @ISA = 'P5AST::listop';
386 package P5AST::op_connect; @ISA = 'P5AST::listop';
387 package P5AST::op_listen; @ISA = 'P5AST::listop';
388 package P5AST::op_accept; @ISA = 'P5AST::listop';
389 package P5AST::op_shutdown; @ISA = 'P5AST::listop';
390 package P5AST::op_gsockopt; @ISA = 'P5AST::listop';
391 package P5AST::op_ssockopt; @ISA = 'P5AST::listop';
392 package P5AST::op_getsockname; @ISA = 'P5AST::baseop_unop';
393 package P5AST::op_getpeername; @ISA = 'P5AST::baseop_unop';
394 package P5AST::op_lstat; @ISA = 'P5AST::filestatop';
395 package P5AST::op_stat; @ISA = 'P5AST::filestatop';
396 package P5AST::op_ftrread; @ISA = 'P5AST::filestatop';
397 package P5AST::op_ftrwrite; @ISA = 'P5AST::filestatop';
398 package P5AST::op_ftrexec; @ISA = 'P5AST::filestatop';
399 package P5AST::op_fteread; @ISA = 'P5AST::filestatop';
400 package P5AST::op_ftewrite; @ISA = 'P5AST::filestatop';
401 package P5AST::op_fteexec; @ISA = 'P5AST::filestatop';
402 package P5AST::op_ftis; @ISA = 'P5AST::filestatop';
403 package P5AST::op_fteowned; @ISA = 'P5AST::filestatop';
404 package P5AST::op_ftrowned; @ISA = 'P5AST::filestatop';
405 package P5AST::op_ftzero; @ISA = 'P5AST::filestatop';
406 package P5AST::op_ftsize; @ISA = 'P5AST::filestatop';
407 package P5AST::op_ftmtime; @ISA = 'P5AST::filestatop';
408 package P5AST::op_ftatime; @ISA = 'P5AST::filestatop';
409 package P5AST::op_ftctime; @ISA = 'P5AST::filestatop';
410 package P5AST::op_ftsock; @ISA = 'P5AST::filestatop';
411 package P5AST::op_ftchr; @ISA = 'P5AST::filestatop';
412 package P5AST::op_ftblk; @ISA = 'P5AST::filestatop';
413 package P5AST::op_ftfile; @ISA = 'P5AST::filestatop';
414 package P5AST::op_ftdir; @ISA = 'P5AST::filestatop';
415 package P5AST::op_ftpipe; @ISA = 'P5AST::filestatop';
416 package P5AST::op_ftlink; @ISA = 'P5AST::filestatop';
417 package P5AST::op_ftsuid; @ISA = 'P5AST::filestatop';
418 package P5AST::op_ftsgid; @ISA = 'P5AST::filestatop';
419 package P5AST::op_ftsvtx; @ISA = 'P5AST::filestatop';
420 package P5AST::op_fttty; @ISA = 'P5AST::filestatop';
421 package P5AST::op_fttext; @ISA = 'P5AST::filestatop';
422 package P5AST::op_ftbinary; @ISA = 'P5AST::filestatop';
423 package P5AST::op_chdir; @ISA = 'P5AST::baseop_unop';
424 package P5AST::op_chown; @ISA = 'P5AST::listop';
425 package P5AST::op_chroot; @ISA = 'P5AST::baseop_unop';
426 package P5AST::op_unlink; @ISA = 'P5AST::listop';
427 package P5AST::op_chmod; @ISA = 'P5AST::listop';
428 package P5AST::op_utime; @ISA = 'P5AST::listop';
429 package P5AST::op_rename; @ISA = 'P5AST::listop';
430 package P5AST::op_link; @ISA = 'P5AST::listop';
431 package P5AST::op_symlink; @ISA = 'P5AST::listop';
432 package P5AST::op_readlink; @ISA = 'P5AST::baseop_unop';
433 package P5AST::op_mkdir; @ISA = 'P5AST::listop';
434 package P5AST::op_rmdir; @ISA = 'P5AST::baseop_unop';
435 package P5AST::op_open_dir; @ISA = 'P5AST::listop';
436 package P5AST::op_readdir; @ISA = 'P5AST::baseop_unop';
437 package P5AST::op_telldir; @ISA = 'P5AST::baseop_unop';
438 package P5AST::op_seekdir; @ISA = 'P5AST::listop';
439 package P5AST::op_rewinddir; @ISA = 'P5AST::baseop_unop';
440 package P5AST::op_closedir; @ISA = 'P5AST::baseop_unop';
441 package P5AST::op_fork; @ISA = 'P5AST::baseop';
442 package P5AST::op_wait; @ISA = 'P5AST::baseop';
443 package P5AST::op_waitpid; @ISA = 'P5AST::listop';
444 package P5AST::op_system; @ISA = 'P5AST::listop';
445 package P5AST::op_exec; @ISA = 'P5AST::listop';
446 package P5AST::op_kill; @ISA = 'P5AST::listop';
447 package P5AST::op_getppid; @ISA = 'P5AST::baseop';
448 package P5AST::op_getpgrp; @ISA = 'P5AST::baseop_unop';
449 package P5AST::op_setpgrp; @ISA = 'P5AST::listop';
450 package P5AST::op_getpriority; @ISA = 'P5AST::listop';
451 package P5AST::op_setpriority; @ISA = 'P5AST::listop';
452 package P5AST::op_time; @ISA = 'P5AST::baseop';
453 package P5AST::op_tms; @ISA = 'P5AST::baseop';
454 package P5AST::op_localtime; @ISA = 'P5AST::baseop_unop';
455 package P5AST::op_gmtime; @ISA = 'P5AST::baseop_unop';
456 package P5AST::op_alarm; @ISA = 'P5AST::baseop_unop';
457 package P5AST::op_sleep; @ISA = 'P5AST::baseop_unop';
458 package P5AST::op_shmget; @ISA = 'P5AST::listop';
459 package P5AST::op_shmctl; @ISA = 'P5AST::listop';
460 package P5AST::op_shmread; @ISA = 'P5AST::listop';
461 package P5AST::op_shmwrite; @ISA = 'P5AST::listop';
462 package P5AST::op_msgget; @ISA = 'P5AST::listop';
463 package P5AST::op_msgctl; @ISA = 'P5AST::listop';
464 package P5AST::op_msgsnd; @ISA = 'P5AST::listop';
465 package P5AST::op_msgrcv; @ISA = 'P5AST::listop';
466 package P5AST::op_semget; @ISA = 'P5AST::listop';
467 package P5AST::op_semctl; @ISA = 'P5AST::listop';
468 package P5AST::op_semop; @ISA = 'P5AST::listop';
469 package P5AST::op_require; @ISA = 'P5AST::baseop_unop';
470 package P5AST::op_dofile; @ISA = 'P5AST::unop';
471 package P5AST::op_entereval; @ISA = 'P5AST::baseop_unop';
472 package P5AST::op_leaveeval; @ISA = 'P5AST::unop';
473 package P5AST::op_entertry; @ISA = 'P5AST::logop';
474 package P5AST::op_leavetry; @ISA = 'P5AST::listop';
475 package P5AST::op_ghbyname; @ISA = 'P5AST::baseop_unop';
476 package P5AST::op_ghbyaddr; @ISA = 'P5AST::listop';
477 package P5AST::op_ghostent; @ISA = 'P5AST::baseop';
478 package P5AST::op_gnbyname; @ISA = 'P5AST::baseop_unop';
479 package P5AST::op_gnbyaddr; @ISA = 'P5AST::listop';
480 package P5AST::op_gnetent; @ISA = 'P5AST::baseop';
481 package P5AST::op_gpbyname; @ISA = 'P5AST::baseop_unop';
482 package P5AST::op_gpbynumber; @ISA = 'P5AST::listop';
483 package P5AST::op_gprotoent; @ISA = 'P5AST::baseop';
484 package P5AST::op_gsbyname; @ISA = 'P5AST::listop';
485 package P5AST::op_gsbyport; @ISA = 'P5AST::listop';
486 package P5AST::op_gservent; @ISA = 'P5AST::baseop';
487 package P5AST::op_shostent; @ISA = 'P5AST::baseop_unop';
488 package P5AST::op_snetent; @ISA = 'P5AST::baseop_unop';
489 package P5AST::op_sprotoent; @ISA = 'P5AST::baseop_unop';
490 package P5AST::op_sservent; @ISA = 'P5AST::baseop_unop';
491 package P5AST::op_ehostent; @ISA = 'P5AST::baseop';
492 package P5AST::op_enetent; @ISA = 'P5AST::baseop';
493 package P5AST::op_eprotoent; @ISA = 'P5AST::baseop';
494 package P5AST::op_eservent; @ISA = 'P5AST::baseop';
495 package P5AST::op_gpwnam; @ISA = 'P5AST::baseop_unop';
496 package P5AST::op_gpwuid; @ISA = 'P5AST::baseop_unop';
497 package P5AST::op_gpwent; @ISA = 'P5AST::baseop';
498 package P5AST::op_spwent; @ISA = 'P5AST::baseop';
499 package P5AST::op_epwent; @ISA = 'P5AST::baseop';
500 package P5AST::op_ggrnam; @ISA = 'P5AST::baseop_unop';
501 package P5AST::op_ggrgid; @ISA = 'P5AST::baseop_unop';
502 package P5AST::op_ggrent; @ISA = 'P5AST::baseop';
503 package P5AST::op_sgrent; @ISA = 'P5AST::baseop';
504 package P5AST::op_egrent; @ISA = 'P5AST::baseop';
505 package P5AST::op_getlogin; @ISA = 'P5AST::baseop';
506 package P5AST::op_syscall; @ISA = 'P5AST::listop';
507 package P5AST::op_lock; @ISA = 'P5AST::baseop_unop';
508 package P5AST::op_threadsv; @ISA = 'P5AST::baseop';
509 package P5AST::op_setstate; @ISA = 'P5AST::cop';
510 package P5AST::op_method_named; @ISA = 'P5AST::padop_svop';
511 package P5AST::op_dor; @ISA = 'P5AST::logop';
512 package P5AST::op_dorassign; @ISA = 'P5AST::logop';
513 package P5AST::op_custom; @ISA = 'P5AST::baseop';
515 # New node types (implicit types within perl)
517 package P5AST::statement; @ISA = 'P5AST::cop';
518 package P5AST::peg; @ISA = 'P5AST::baseop';
519 package P5AST::parens; @ISA = 'P5AST::baseop';
520 package P5AST::bindop; @ISA = 'P5AST::baseop';
521 package P5AST::nothing; @ISA = 'P5AST::baseop';
522 package P5AST::condstate; @ISA = 'P5AST::logop';
523 package P5AST::use; @ISA = 'P5AST::baseop';
524 package P5AST::ternary; @ISA = 'P5AST::baseop';
525 package P5AST::sub; @ISA = 'P5AST::baseop';
526 package P5AST::condmod; @ISA = 'P5AST::logop';
527 package P5AST::package; @ISA = 'P5AST::baseop';
528 package P5AST::format; @ISA = 'P5AST::baseop';
529 package P5AST::qwliteral; @ISA = 'P5AST::baseop';
530 package P5AST::quote; @ISA = 'P5AST::baseop';
531 package P5AST::token; @ISA = 'P5AST::baseop';
532 package P5AST::attrlist; @ISA = 'P5AST::baseop';
533 package P5AST::listelem; @ISA = 'P5AST::baseop';
534 package P5AST::preplus; @ISA = 'P5AST::baseop';
535 package P5AST::doblock; @ISA = 'P5AST::baseop';
536 package P5AST::cfor; @ISA = 'P5AST::baseop';
537 package P5AST::pmop; @ISA = 'P5AST::baseop';