You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
67 lines
1.4 KiB
67 lines
1.4 KiB
=head1 NAME
|
|
|
|
design.pod - ANTLR::Runtime Design Document
|
|
|
|
=head1 ABSTRACT
|
|
|
|
This document describes the design of the C<ANTLR::Runtime> Perl 5 port.
|
|
|
|
=head1 OVERVIEW
|
|
|
|
C<ANTLR::Runtime> is the port of the runtime part for ANTLR to Perl 5. ANTLR's
|
|
primary target language is Java. This port tries to mimic this implementation
|
|
very closely, which hopefully makes it easier to port. The parts visible to
|
|
Perl users should be perlish if possible - at least as a secondary interface.
|
|
|
|
=head1 Basic Porting Considerations
|
|
|
|
Java is built on two basic concepts: Objects and Exceptions. If there's a
|
|
good match for those features most other things should fall into place.
|
|
|
|
=head2 OO
|
|
|
|
C<ANTLR::Runtime> uses C<Object::InsideOut> for OO modelling.
|
|
|
|
=head3 Packages
|
|
|
|
The Java package C<org.antlr.runtime> maps to the Perl 5 package
|
|
C<ANTLR::Runtime>.
|
|
|
|
=head3 Classes
|
|
|
|
Each Java class maps to a Perl 5 class with the same name.
|
|
|
|
=head2 Exceptions
|
|
|
|
C<Exception::Class> should meet our needs and is used by C<Object::InsideOut>
|
|
too.
|
|
|
|
=head2 Types
|
|
|
|
Here's a list of Java types and how they should map to Perl.
|
|
|
|
=over
|
|
|
|
=item byte, short, int, long, float, double, String
|
|
|
|
Use a Perl scalar.
|
|
|
|
=item C<java.util.List>
|
|
|
|
Use a reference to a Perl array.
|
|
|
|
=item C<java.util.Map>
|
|
|
|
Use a reference to a Perl hash.
|
|
|
|
=back
|
|
|
|
=head1 SEE ALSO
|
|
|
|
L<http://www.antlr.org/>
|
|
|
|
|
|
=head1 AUTHOR
|
|
|
|
Ronald Blaschke (ron@rblasch.org)
|