package Anarres::Mud::Driver::Compiler; use strict; use warnings; use vars qw($VERSION @ISA); use Carp qw(cluck confess); require DynaLoader; $VERSION = 0.10; @ISA = qw(DynaLoader); use Anarres::Mud::Driver::Compiler::Type; use Anarres::Mud::Driver::Compiler::Node; use Anarres::Mud::Driver::Compiler::Dump; use Anarres::Mud::Driver::Compiler::Check; use Anarres::Mud::Driver::Compiler::Generate; bootstrap Anarres::Mud::Driver::Compiler; sub compile { my ($self, $path) = @_; my $program = new Anarres::Mud::Driver::Program( Path => $path, ); my $data; { local $/ = undef; local *FH; open(FH, "<$path") or die "Compiler: Cannot open file $path"; $data = <FH>; close(FH); } { local $SIG{__WARN__} = sub { cluck @_; }; local $SIG{__DIE__} = sub { confess @_; }; $self->parse($program, $data); } return $program } 1;