diff options
author | Malcolm Beattie <mbeattie@sable.ox.ac.uk> | 1998-07-21 19:13:16 +0100 |
---|---|---|
committer | Gurusamy Sarathy <gsar@cpan.org> | 1998-07-22 01:42:14 +0000 |
commit | 1a52ab62ecd17035bea67b718b7daed8ad18e673 (patch) | |
tree | 7efc4f40ed4b43379856efa28b49e0baf73fd0c6 /ext/B/O.pm | |
parent | 92742e379e6f1679633256cac8dcf3be460cfb98 (diff) | |
download | perl-1a52ab62ecd17035bea67b718b7daed8ad18e673.tar.gz |
Compiler docs for 5.005
Message-Id: <199807211713.SAA20735@sable.ox.ac.uk>
p4raw-id: //depot/perl@1617
Diffstat (limited to 'ext/B/O.pm')
-rw-r--r-- | ext/B/O.pm | 47 |
1 files changed, 46 insertions, 1 deletions
diff --git a/ext/B/O.pm b/ext/B/O.pm index 3b0f0543e8..ad391a3f4a 100644 --- a/ext/B/O.pm +++ b/ext/B/O.pm @@ -31,7 +31,52 @@ O - Generic interface to Perl Compiler backends =head1 DESCRIPTION -See F<ext/B/README>. +This is the module that is used as a frontend to the Perl Compiler. + +=head1 CONVENTIONS + +Most compiler backends use the following conventions: OPTIONS +consists of a comma-separated list of words (no white-space). +The C<-v> option usually puts the backend into verbose mode. +The C<-ofile> option generates output to B<file> instead of +stdout. The C<-D> option followed by various letters turns on +various internal debugging flags. See the documentation for the +desired backend (named C<B::Backend> for the example above) to +find out about that backend. + +=head1 IMPLEMENTATION + +This section is only necessary for those who want to write a +compiler backend module that can be used via this module. + +The command-line mentioned in the SYNOPSIS section corresponds to +the Perl code + + use O ("Backend", OPTIONS); + +The C<import> function which that calls loads in the appropriate +C<B::Backend> module and calls the C<compile> function in that +package, passing it OPTIONS. That function is expected to return +a sub reference which we'll call CALLBACK. Next, the "compile-only" +flag is switched on (equivalent to the command-line option C<-c>) +and an END block is registered which calls CALLBACK. Thus the main +Perl program mentioned on the command-line is read in, parsed and +compiled into internal syntax tree form. Since the C<-c> flag is +set, the program does not start running (excepting BEGIN blocks of +course) but the CALLBACK function registered by the compiler +backend is called. + +In summary, a compiler backend module should be called "B::Foo" +for some foo and live in the appropriate directory for that name. +It should define a function called C<compile>. When the user types + + perl -MO=Foo,OPTIONS foo.pl + +that function is called and is passed those OPTIONS (split on +commas). It should return a sub ref to the main compilation function. +After the user's program is loaded and parsed, that returned sub ref +is invoked which can then go ahead and do the compilation, usually by +making use of the C<B> module's functionality. =head1 AUTHOR |