NAME
Java::Javap::Generator - Factory for Perl 6 generators
SYNOPSIS
use Java::Javap::Generator;
my $gen = Java::Javap::Generator->get_generator( 'NAME', @args );
my $output = $gen->generate( @more_args );
DESCRIPTION
This is a factory class which returns a Java -> Perl 6 generator. All generators must live in the Java::Javap::Generator:: namespace. They must supply a new
and generate
methods.
To use a particular generator, see its POD.
KNOWN GENERATORS
Java::Javap::Generator::Std - uses TT templates
METHODS
This moduule provides only one method which returns an instance of the supplied generating class.
get_generator
Call get_generator
with the name of the generator you want to use. Pass any additional arguments expected by the new
method of your genertor's class. Example:
my $generator = Java::Javap::Generator->get_generator( 'Std' );
GENERATOR API
Each generator must live in the Java::Javap::Generator:: namespace and must implement two methods:
new
A constructor called by get_generator
in this module. Your constructor will receive all of the parameters passed to get_generator
, except the name of the subclass (but new
is invoked through the fully qualified subclass name, so you get that too).
java2perl6
allows callers to supply these parameters as a string on the command line with the -p
(or --genopts
) flag, whose value is split on whitespace before the call.
generate
This method returns a single string containing the full text of a Perl module corresponding to the abstract syntax tree of a Java module. Someone else will decide what to do with the output, all you need to do is make the string. See the test files t/02_interface.t
and t/03_class.t
for examples of the syntax tree data structure.
Parameters are supplied to your generate
in a single hash reference. These are the ones supplied by the java2perl6
command line tool:
- class_file
-
The name of the Java .class file which was run through javap.
- ast
-
The abstract syntax tree made from the class file by
Java::Javap::Grammar
. Again, see the tests for examples of the tree data structure. - javap_flags
-
The command line flags passed to javap (like -classpath ...). These are included so you can dump them into a comment in the generated output.
EXPORT
None. Call get_generator
as a class method.
SEE ALSO
All the modules in the Java::Javap::Generator:: namespace.
AUTHOR
Phil Crow, <crow.phil@gmail.com>
COPYRIGHT AND LICENSE
Copyright (C) 2007, Phil Crow
This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself, either Perl version 5.8.6 or, at your option, any later version of Perl 5 you may have available.