# [[[ HEADER ]]]
package
# hide from PAUSE indexing
rperloperations;
## no critic qw(Capitalization ProhibitMultiplePackages ProhibitReusedNames) # SYSTEM DEFAULT 3: allow multiple & lower case package names
use
strict;
use
warnings;
our
$VERSION
= 0.003_000;
use
Carp;
# NEED UPGRADE: make Grammars first-class citizens for full Perl 6 compatibility, we should have it done by Christmas XD
#use parent qw(RPerl::GrammarComponent)
# RPerl system builtin functions, RPerl to C++ name mapping, used in SubroutineCall.pm
our
$BUILTINS
= {
'blessed'
=>
'classname'
,
'class'
=>
'classname'
,
'to_string'
=>
'To_string'
,
# DEV NOTE, CORRELATION #rp028: renamed from Perl to_string() to C++ To_string() to avoid error redefining std::to_string()
# NEED REFACTOR: move SSE builtins to rperlsse.pm, create second $BUILTINS to be used in SubroutineCall.pm?
'sse_number_pair::new_from_singleton_duplicate'
=>
'sse_number_pair__new_from_singleton_duplicate'
,
'sse_number_pair::new_from_pair'
=>
'sse_number_pair__new_from_pair'
,
'constant_sse_number_pair::new_from_singleton_duplicate'
=>
'constant_sse_number_pair__new_from_singleton_duplicate'
,
'constant_sse_number_pair::new_from_pair'
=>
'constant_sse_number_pair__new_from_pair'
};
# Perl system builtin named operators (AKA named functions);
# the following tokens and their associated rules represent Perl builtin functions which may return-by-value an array or hash data structure,
# instead of an arrayref or hashref as with all user-defined RPerl subroutines and variables
our
$BUILTINS_PERL_NAMED
= {
#our $POSSIBLE_ARRAY_OR_HASH_RETURN_VALUE = { # alternative naming
# token: OP10_NAMED_UNARY_SCOLON
Operation_97
=>
'RPerl::Operation::Expression::Operator::NamedUnary'
,
# Operation -> OP10_NAMED_UNARY_SCOLON
OpNamedScolonOrSubExp_258
=>
'RPerl::NonGenerator'
,
# OpNamedScolonOrSubExp -> OP10_NAMED_UNARY_SCOLON
OpNamedScolonOrSubExpIn_261
=>
'RPerl::NonGenerator'
,
# OpNamedScolonOrSubExpIn -> OP10_NAMED_UNARY_SCOLON
# token: OP10_NAMED_UNARY
Operator_116
=>
'RPerl::Operation::Expression::Operator::NamedUnary'
,
# Operator -> OP10_NAMED_UNARY SubExpression
Operator_117
=>
'RPerl::Operation::Expression::Operator::NamedUnary'
,
# Operator -> OP10_NAMED_UNARY
OpStringOrWord_270
=>
'RPerl::NonGenerator'
,
# OpStringOrWord -> OP10_NAMED_UNARY
# token: OP01_QW
ListElement_214
=>
'RPerl::DataStructure::Array::ListElement'
,
# ListElement -> OP01_QW
# token: OP01_NAMED_SCOLON
Operation_96
=>
'RPerl::Operation::Expression::Operator::Named'
,
# Operation -> OP01_NAMED_SCOLON
OpNamedScolonOrSubExp_257
=>
'RPerl::NonGenerator'
,
# OpNamedScolonOrSubExp -> OP01_NAMED_SCOLON
OpNamedScolonOrSubExpIn_260
=>
'RPerl::NonGenerator'
,
# OpNamedScolonOrSubExpIn -> OP01_NAMED_SCOLON
# token: OP01_NAMED
Operator_100
=>
'RPerl::Operation::Expression::Operator::Named'
,
# Operator -> OP01_NAMED SubExpression
Operator_101
=>
'RPerl::Operation::Expression::Operator::Named'
,
# Operator -> LPAREN OP01_NAMED ListElement OP21_LIST_COMMA ListElements ')'
OperatorVoid_140
=>
'RPerl::Operation::Expression::Operator::Named'
,
# OperatorVoid -> OP01_NAMED ListElement OP21_LIST_COMMA ListElements ';'
};
# [[[ EXPRESSIONS ]]]
# DEV NOTE, CORRELATION #rp020: upon adding new named op file lib/RPerl/Operation/Expression/Operator/Named*/* also add in Named*.pm and rperloperations.*
use
RPerl::Operation::Expression::SubroutineCall::MethodCall::ConstructorCall;
# grammar rule & operation
# [[[ STATEMENTS ]]]
1;