Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
Refactor HLL::Compiler.command_line so that compilers can more easily…
… intercept argument processing.
  • Loading branch information
pmichaud committed Jul 24, 2011
1 parent 9fe040c commit 9573361
Showing 1 changed file with 23 additions and 19 deletions.
42 changes: 23 additions & 19 deletions src/HLL/Compiler.pm
Expand Up @@ -290,29 +290,33 @@ class HLL::Compiler {
%adverbs{$k} := %opts{$k};
}
self.usage($program-name) if %adverbs<help>;
self.version if %adverbs<version>;
self.show-config if %adverbs<show-config>;
self.nqpevent(%adverbs<nqpevent>) if %adverbs<nqpevent>;

pir::load_bytecode('dumper.pbc');
pir::load_bytecode('PGE/Dumper.pbc');

{ # try
my $result;
if %adverbs<e> { $result := self.eval(%adverbs<e>, |@a, |%adverbs) }
elsif !@a { $result := self.interactive(|%adverbs) }
elsif %adverbs<combine> { $result := self.evalfiles(@a, |%adverbs) }
else { $result := self.evalfiles(@a[0], |@a, |%adverbs) }

if !pir::isnull($result) && %adverbs<target> eq 'pir' {
my $output := %adverbs<output>;
my $fh := ($output eq '' || $output eq '-')
?? pir::getinterp__P().stdout_handle()
!! pir::new__Ps('FileHandle').open($output, 'w');
self.panic("Cannot write to $output") unless $fh;
pir::print($fh, $result);
$fh.close()
}
self.command_eval(|@a, |%adverbs);
}


method command_eval(*@a, *%adverbs) {
self.version if %adverbs<version>;
self.show-config if %adverbs<show-config>;
self.nqpevent(%adverbs<nqpevent>) if %adverbs<nqpevent>;

my $result;
if %adverbs<e> { $result := self.eval(%adverbs<e>, |@a, |%adverbs) }
elsif !@a { $result := self.interactive(|%adverbs) }
elsif %adverbs<combine> { $result := self.evalfiles(@a, |%adverbs) }
else { $result := self.evalfiles(@a[0], |@a, |%adverbs) }

if !pir::isnull($result) && %adverbs<target> eq 'pir' {
my $output := %adverbs<output>;
my $fh := ($output eq '' || $output eq '-')
?? pir::getinterp__P().stdout_handle()
!! pir::new__Ps('FileHandle').open($output, 'w');
self.panic("Cannot write to $output") unless $fh;
pir::print($fh, $result);
$fh.close()
}
}

Expand Down

0 comments on commit 9573361

Please sign in to comment.