X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=ext%2FB%2FO.pm;h=ad391a3f4a4f88642542469382002569d5f81a20;hb=8d814b804e379974e16ec397b78d6c0812467daf;hp=40d336e12211fc67269d41a8ce3501b0cc3be055;hpb=a798dbf2f5009fe67f7460a594ffd57a76c0fa98;p=p5sagit%2Fp5-mst-13.2.git diff --git a/ext/B/O.pm b/ext/B/O.pm index 40d336e..ad391a3 100644 --- a/ext/B/O.pm +++ b/ext/B/O.pm @@ -19,3 +19,67 @@ sub import { 1; +__END__ + +=head1 NAME + +O - Generic interface to Perl Compiler backends + +=head1 SYNOPSIS + + perl -MO=Backend[,OPTIONS] foo.pl + +=head1 DESCRIPTION + +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 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 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 function which that calls loads in the appropriate +C module and calls the C 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. 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 module's functionality. + +=head1 AUTHOR + +Malcolm Beattie, C + +=cut