summaryrefslogtreecommitdiff
path: root/ext/XS-APItest-KeywordRPN/KeywordRPN.pm
diff options
context:
space:
mode:
Diffstat (limited to 'ext/XS-APItest-KeywordRPN/KeywordRPN.pm')
-rw-r--r--ext/XS-APItest-KeywordRPN/KeywordRPN.pm143
1 files changed, 0 insertions, 143 deletions
diff --git a/ext/XS-APItest-KeywordRPN/KeywordRPN.pm b/ext/XS-APItest-KeywordRPN/KeywordRPN.pm
deleted file mode 100644
index 224faf773d..0000000000
--- a/ext/XS-APItest-KeywordRPN/KeywordRPN.pm
+++ /dev/null
@@ -1,143 +0,0 @@
-=head1 NAME
-
-XS::APItest::KeywordRPN - write arithmetic expressions in RPN
-
-=head1 SYNOPSIS
-
- use XS::APItest::KeywordRPN qw(rpn calcrpn);
-
- $triangle = rpn($n $n 1 + * 2 /);
-
- calcrpn $triangle { $n $n 1 + * 2 / }
-
-=head1 DESCRIPTION
-
-This module supplies plugged-in keywords, using the new mechanism in Perl
-5.11.2, that allow arithmetic to be expressed in reverse Polish notation,
-in an otherwise Perl program. This module has serious limitations and
-is not intended for real use: its purpose is only to test the keyword
-plugin mechanism. For that purpose it is part of the Perl core source
-distribution, and is not meant to be installed.
-
-=head2 RPN expression syntax
-
-Tokens of an RPN expression may be separated by whitespace, but such
-separation is usually not required. It is required only where unseparated
-tokens would look like a longer token. For example, C<12 34 +> can be
-written as C<12 34+>, but not as C<1234 +>.
-
-An RPN expression may be any of:
-
-=over
-
-=item C<1234>
-
-A sequence of digits is an unsigned decimal literal number.
-
-=item C<$foo>
-
-An alphanumeric name preceded by dollar sign refers to a Perl scalar
-variable. Only variables declared with C<my> or C<state> are supported.
-If the variable's value is not a native integer, it will be converted
-to an integer, by Perl's usual mechanisms, at the time it is evaluated.
-
-=item I<A> I<B> C<+>
-
-Sum of I<A> and I<B>.
-
-=item I<A> I<B> C<->
-
-Difference of I<A> and I<B>, the result of subtracting I<B> from I<A>.
-
-=item I<A> I<B> C<*>
-
-Product of I<A> and I<B>.
-
-=item I<A> I<B> C</>
-
-Quotient when I<A> is divided by I<B>, rounded towards zero.
-Division by zero generates an exception.
-
-=item I<A> I<B> C<%>
-
-Remainder when I<A> is divided by I<B> with the quotient rounded towards zero.
-Division by zero generates an exception.
-
-=back
-
-Because the arithmetic operators all have fixed arity and are postfixed,
-there is no need for operator precedence, nor for a grouping operator
-to override precedence. This is half of the point of RPN.
-
-An RPN expression can also be interpreted in another way, as a sequence
-of operations on a stack, one operation per token. A literal or variable
-token pushes a value onto the stack. A binary operator pulls two items
-off the stack, performs a calculation with them, and pushes the result
-back onto the stack. The stack starts out empty, and at the end of the
-expression there must be exactly one value left on the stack.
-
-=cut
-
-package XS::APItest::KeywordRPN;
-
-{ use 5.011001; }
-use warnings;
-use strict;
-
-our $VERSION = "0.005";
-
-require XSLoader;
-XSLoader::load(__PACKAGE__, $VERSION);
-
-=head1 OPERATORS
-
-These are the operators being added to the Perl language.
-
-=over
-
-=item rpn(EXPRESSION)
-
-This construct is a Perl expression. I<EXPRESSION> must be an RPN
-arithmetic expression, as described above. The RPN expression is
-evaluated, and its value is returned as the value of the Perl expression.
-
-=item calcrpn VARIABLE { EXPRESSION }
-
-This construct is a complete Perl statement. (No semicolon should
-follow the closing brace.) I<VARIABLE> must be a Perl scalar C<my>
-variable, and I<EXPRESSION> must be an RPN arithmetic expression as
-described above. The RPN expression is evaluated, and its value is
-assigned to the variable.
-
-=back
-
-=head1 BUGS
-
-This module only performs arithmetic on native integers, and only a
-small subset of the arithmetic operations that Perl offers. This is
-due to it being intended only for demonstration and test purposes.
-
-The RPN parser is liable to leak memory when a parse error occurs.
-It doesn't leak on success, however.
-
-=head1 SEE ALSO
-
-L<Devel::Declare>,
-L<perlapi/PL_keyword_plugin>
-
-=head1 AUTHOR
-
-Andrew Main (Zefram) <zefram@fysh.org>
-
-=head1 COPYRIGHT
-
-Copyright (C) 2009 Andrew Main (Zefram) <zefram@fysh.org>
-
-=head1 LICENSE
-
-This module is free software; you can redistribute it and/or modify it
-under the same terms as Perl itself.
-
-=cut
-
-1;