xref: /aosp_15_r20/external/antlr/runtime/Perl5/docs/design.pod (revision 16467b971bd3e2009fad32dd79016f2c7e421deb)
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