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