Initial commit of OpenSPARC T2 design and verification files.
[OpenSPARC-T2-DV] / tools / perl-5.8.0 / lib / site_perl / 5.8.0 / Psh / Strategy / Built_in.pm
CommitLineData
86530b38
AT
1package Psh::Strategy::Built_in;
2
3require Psh::Strategy;
4require Psh::Options;
5require Psh::Support::Builtins;
6
7@Psh::Strategy::Built_in::ISA=('Psh::Strategy');
8
9Psh::Support::Builtins::build_autoload_list();
10
11sub new { Psh::Strategy::new(@_) }
12
13sub consumes {
14 return Psh::Strategy::CONSUME_TOKENS;
15}
16
17sub runs_before {
18 return qw(executable auto_resume auto_cd);
19}
20
21sub applies {
22 my $fnname= ${$_[2]}[0];
23
24 if( $fnname= Psh::Support::Builtins::is_builtin($fnname)) {
25 eval 'use Psh::Builtins::'.ucfirst($fnname);
26 if ($@) {
27 Psh::Util::print_error_i18n('builtin_failed',$@);
28 }
29 return $fnname;
30 }
31 return '';
32}
33
34sub execute {
35 my $line= ${$_[1]};
36 my @words= @{$_[2]};
37 my $command= $_[3];
38 shift @words;
39 my $coderef;
40
41 my $rest= join(' ',@words);
42
43 no strict 'refs';
44 $coderef= *{join('','Psh::Builtins::',ucfirst($command),
45 '::bi_',$command)};
46 return (1,sub { &{$coderef}($rest,\@words); }, [], 0, undef );
47}
48
491;