1*16467b97STreehugger Robot=head1 NAME 2*16467b97STreehugger Robot 3*16467b97STreehugger Robotdesign.pod - ANTLR::Runtime Design Document 4*16467b97STreehugger Robot 5*16467b97STreehugger Robot=head1 ABSTRACT 6*16467b97STreehugger Robot 7*16467b97STreehugger RobotThis document describes the design of the C<ANTLR::Runtime> Perl 5 port. 8*16467b97STreehugger Robot 9*16467b97STreehugger Robot=head1 OVERVIEW 10*16467b97STreehugger Robot 11*16467b97STreehugger RobotC<ANTLR::Runtime> is the port of the runtime part for ANTLR to Perl 5. ANTLR's 12*16467b97STreehugger Robotprimary target language is Java. This port tries to mimic this implementation 13*16467b97STreehugger Robotvery closely, which hopefully makes it easier to port. The parts visible to 14*16467b97STreehugger RobotPerl users should be perlish if possible - at least as a secondary interface. 15*16467b97STreehugger Robot 16*16467b97STreehugger Robot=head1 Basic Porting Considerations 17*16467b97STreehugger Robot 18*16467b97STreehugger RobotJava is built on two basic concepts: Objects and Exceptions. If there's a 19*16467b97STreehugger Robotgood match for those features most other things should fall into place. 20*16467b97STreehugger Robot 21*16467b97STreehugger Robot=head2 OO 22*16467b97STreehugger Robot 23*16467b97STreehugger RobotC<ANTLR::Runtime> uses C<Object::InsideOut> for OO modelling. 24*16467b97STreehugger Robot 25*16467b97STreehugger Robot=head3 Packages 26*16467b97STreehugger Robot 27*16467b97STreehugger RobotThe Java package C<org.antlr.runtime> maps to the Perl 5 package 28*16467b97STreehugger RobotC<ANTLR::Runtime>. 29*16467b97STreehugger Robot 30*16467b97STreehugger Robot=head3 Classes 31*16467b97STreehugger Robot 32*16467b97STreehugger RobotEach Java class maps to a Perl 5 class with the same name. 33*16467b97STreehugger Robot 34*16467b97STreehugger Robot=head2 Exceptions 35*16467b97STreehugger Robot 36*16467b97STreehugger RobotC<Exception::Class> should meet our needs and is used by C<Object::InsideOut> 37*16467b97STreehugger Robottoo. 38*16467b97STreehugger Robot 39*16467b97STreehugger Robot=head2 Types 40*16467b97STreehugger Robot 41*16467b97STreehugger RobotHere's a list of Java types and how they should map to Perl. 42*16467b97STreehugger Robot 43*16467b97STreehugger Robot=over 44*16467b97STreehugger Robot 45*16467b97STreehugger Robot=item byte, short, int, long, float, double, String 46*16467b97STreehugger Robot 47*16467b97STreehugger RobotUse a Perl scalar. 48*16467b97STreehugger Robot 49*16467b97STreehugger Robot=item C<java.util.List> 50*16467b97STreehugger Robot 51*16467b97STreehugger RobotUse a reference to a Perl array. 52*16467b97STreehugger Robot 53*16467b97STreehugger Robot=item C<java.util.Map> 54*16467b97STreehugger Robot 55*16467b97STreehugger RobotUse a reference to a Perl hash. 56*16467b97STreehugger Robot 57*16467b97STreehugger Robot=back 58*16467b97STreehugger Robot 59*16467b97STreehugger Robot=head1 SEE ALSO 60*16467b97STreehugger Robot 61*16467b97STreehugger RobotL<http://www.antlr.org/> 62*16467b97STreehugger Robot 63*16467b97STreehugger Robot 64*16467b97STreehugger Robot=head1 AUTHOR 65*16467b97STreehugger Robot 66*16467b97STreehugger RobotRonald Blaschke ([email protected]) 67