our
$VERSION
= 0.002_010;
use
constant
NAME_PERLOPS_PERLTYPES
=>
my
string
$TYPED_NAME_PERLOPS_PERLTYPES
=
'return'
;
use
constant
NAME_CPPOPS_PERLTYPES
=>
my
string
$TYPED_NAME_CPPOPS_PERLTYPES
=
'return'
;
use
constant
NAME_CPPOPS_CPPTYPES
=>
my
string
$TYPED_NAME_CPPOPS_CPPTYPES
=
'return'
;
use
constant
ARGUMENTS_MIN
=>
my
integer
$TYPED_ARGUMENTS_MIN
= 0;
use
constant
ARGUMENTS_MAX
=>
my
integer
$TYPED_ARGUMENTS_MAX
= 1;
our
hashref
$properties
= {};
sub
ast_to_rperl__generate {
{
my
string_hashref::method
$RETURN_TYPE
};
(
my
object
$self
,
my
string_hashref
$modes
,
my
object
$operator_void_named
)
=
@ARG
;
my
string_hashref
$rperl_source_group
= {
PMC
=>
q{}
};
if
(
ref
$operator_void_named
eq
'OperatorVoid_137'
) {
$rperl_source_group
->{PMC} .=
$operator_void_named
->{children}->[0];
}
elsif
(
ref
$operator_void_named
eq
'OperatorVoid_138'
) {
$rperl_source_group
->{PMC}
.=
$operator_void_named
->{children}->[0];
my
object
$arguments_optional
=
$operator_void_named
->{children}->[1];
if
(
exists
$arguments_optional
->{children}->[0] ) {
my
object
$arguments
=
$arguments_optional
->{children}->[0];
my
integer
$argument_count
=
$arguments
->
length
();
if
(
$argument_count
> ARGUMENTS_MAX() ) {
die
'ERROR ECOGEASRP003, CODE GENERATOR, ABSTRACT SYNTAX TO RPERL:'
.
"\n"
.
'Argument count '
.
$argument_count
.
' exceeds maximum argument limit '
. ARGUMENTS_MAX()
.
' for operator '
.
q{'}
. NAME_PERLOPS_PERLTYPES() .
q{'}
.
', dying'
.
"\n"
;
}
if
(((
ref
$arguments
->{children}->[0] ) eq
'ListElement_212'
) and (
exists
$arguments
->{children}->[0]->{children}->[0] ))
{
my
object
$arguments_subexpression
=
$arguments
->{children}->[0]->{children}->[0];
while
((
ref
$arguments_subexpression
) eq
'SubExpression_163'
) {
$arguments_subexpression
=
$arguments_subexpression
->{children}->[1];
}
if
((
ref
$arguments_subexpression
) eq
'SubExpression_160'
) {
die
'ERROR ECOGEASRP004, CODE GENERATOR, ABSTRACT SYNTAX TO RPERL:'
.
"\n"
.
'Attempt to return dereferenced array, please return arrayref instead, dying'
.
"\n"
;
}
elsif
((
ref
$arguments_subexpression
) eq
'SubExpression_162'
) {
die
'ERROR ECOGEASRP005, CODE GENERATOR, ABSTRACT SYNTAX TO RPERL:'
.
"\n"
.
'Attempt to return dereferenced hash, please return hashref instead, dying'
.
"\n"
;
}
}
my
string_hashref
$rperl_source_subgroup
=
$arguments
->ast_to_rperl__generate(
$modes
,
$self
);
RPerl::Generator::source_group_append(
$rperl_source_group
,
$rperl_source_subgroup
);
}
$rperl_source_group
->{PMC} .=
$operator_void_named
->{children}->[2]
.
$operator_void_named
->{children}->[3];
}
elsif
(
ref
$operator_void_named
eq
'OperatorVoid_139'
) {
$rperl_source_group
->{PMC}
.=
$operator_void_named
->{children}->[0] .
q{ }
;
my
object
$arguments
=
$operator_void_named
->{children}->[1];
my
integer
$argument_count
=
$arguments
->
length
();
if
(
$argument_count
> ARGUMENTS_MAX() ) {
die
'ERROR ECOGEASRP003, CODE GENERATOR, ABSTRACT SYNTAX TO RPERL:'
.
"\n"
.
'Argument count '
.
$argument_count
.
' exceeds maximum argument limit '
. ARGUMENTS_MAX()
.
' for operator '
.
q{'}
. NAME_PERLOPS_PERLTYPES() .
q{'}
.
', dying'
.
"\n"
;
}
if
(((
ref
$arguments
->{children}->[0] ) eq
'ListElement_212'
) and (
exists
$arguments
->{children}->[0]->{children}->[0] ))
{
my
object
$arguments_subexpression
=
$arguments
->{children}->[0]->{children}->[0];
while
((
ref
$arguments_subexpression
) eq
'SubExpression_163'
) {
$arguments_subexpression
=
$arguments_subexpression
->{children}->[1];
}
if
((
ref
$arguments_subexpression
) eq
'SubExpression_160'
) {
die
'ERROR ECOGEASRP004, CODE GENERATOR, ABSTRACT SYNTAX TO RPERL:'
.
"\n"
.
'Attempt to return dereferenced array, please return arrayref instead, dying'
.
"\n"
;
}
elsif
((
ref
$arguments_subexpression
) eq
'SubExpression_162'
) {
die
'ERROR ECOGEASRP005, CODE GENERATOR, ABSTRACT SYNTAX TO RPERL:'
.
"\n"
.
'Attempt to return dereferenced hash, please return hashref instead, dying'
.
"\n"
;
}
}
my
string_hashref
$rperl_source_subgroup
=
$arguments
->ast_to_rperl__generate(
$modes
,
$self
);
RPerl::Generator::source_group_append(
$rperl_source_group
,
$rperl_source_subgroup
);
$rperl_source_group
->{PMC} .=
$operator_void_named
->{children}->[2];
}
else
{
die
RPerl::Parser::rperl_rule__replace(
'ERROR ECOGEASRP000, CODE GENERATOR, ABSTRACT SYNTAX TO RPERL: Grammar rule '
. (
ref
$operator_void_named
)
.
' found where OperatorVoid_137, OperatorVoid_138, or OperatorVoid_139 expected, dying'
) .
"\n"
;
}
$rperl_source_group
->{PMC} .=
"\n"
;
return
$rperl_source_group
;
}
sub
ast_to_cpp__generate__CPPOPS_PERLTYPES {
{
my
string_hashref::method
$RETURN_TYPE
};
(
my
object
$self
,
my
string_hashref
$modes
) =
@ARG
;
my
string_hashref
$cpp_source_group
= {
CPP
=>
q{// <<< RP::O::S::OV::N::R __DUMMY_SOURCE_CODE CPPOPS_PERLTYPES >>>}
.
"\n"
};
return
$cpp_source_group
;
}
sub
ast_to_cpp__generate__CPPOPS_CPPTYPES {
{
my
string_hashref::method
$RETURN_TYPE
};
(
my
object
$self
,
my
string_hashref
$modes
,
my
object
$operator_void_named
)
=
@ARG
;
my
string_hashref
$cpp_source_group
= {
CPP
=>
q{}
};
if
(
ref
$operator_void_named
eq
'OperatorVoid_137'
) {
$cpp_source_group
->{CPP} .=
$operator_void_named
->{children}->[0];
}
elsif
(
ref
$operator_void_named
eq
'OperatorVoid_138'
) {
$cpp_source_group
->{CPP}
.=
$operator_void_named
->{children}->[0];
my
object
$arguments_optional
=
$operator_void_named
->{children}->[1];
if
(
exists
$arguments_optional
->{children}->[0] ) {
my
object
$arguments
=
$arguments_optional
->{children}->[0];
my
integer
$argument_count
=
$arguments
->
length
();
if
(
$argument_count
> ARGUMENTS_MAX() ) {
die
'ERROR ECOGEASCP003, CODE GENERATOR, ABSTRACT SYNTAX TO C++:'
.
"\n"
.
'Argument count '
.
$argument_count
.
' exceeds maximum argument limit '
. ARGUMENTS_MAX()
.
' for operator '
.
q{'}
. NAME_PERLOPS_PERLTYPES() .
q{'}
.
', dying'
.
"\n"
;
}
if
(((
ref
$arguments
->{children}->[0] ) eq
'ListElement_212'
) and (
exists
$arguments
->{children}->[0]->{children}->[0] ))
{
my
object
$arguments_subexpression
=
$arguments
->{children}->[0]->{children}->[0];
while
((
ref
$arguments_subexpression
) eq
'SubExpression_163'
) {
$arguments_subexpression
=
$arguments_subexpression
->{children}->[1];
}
if
((
ref
$arguments_subexpression
) eq
'SubExpression_160'
) {
die
'ERROR ECOGEASCP004, CODE GENERATOR, ABSTRACT SYNTAX TO C++:'
.
"\n"
.
'Attempt to return dereferenced array, please return arrayref instead, dying'
.
"\n"
;
}
elsif
((
ref
$arguments_subexpression
) eq
'SubExpression_162'
) {
die
'ERROR ECOGEASCP005, CODE GENERATOR, ABSTRACT SYNTAX TO C++:'
.
"\n"
.
'Attempt to return dereferenced hash, please return hashref instead, dying'
.
"\n"
;
}
}
my
string_hashref
$cpp_source_subgroup
=
$arguments
->ast_to_cpp__generate__CPPOPS_CPPTYPES(
$modes
,
$self
);
RPerl::Generator::source_group_append(
$cpp_source_group
,
$cpp_source_subgroup
);
}
$cpp_source_group
->{CPP} .=
$operator_void_named
->{children}->[2]
.
$operator_void_named
->{children}->[3];
}
elsif
(
ref
$operator_void_named
eq
'OperatorVoid_139'
) {
$cpp_source_group
->{CPP}
.=
$operator_void_named
->{children}->[0] .
q{ }
;
my
object
$arguments
=
$operator_void_named
->{children}->[1];
my
integer
$argument_count
=
$arguments
->
length
();
if
(
$argument_count
> ARGUMENTS_MAX() ) {
die
'ERROR ECOGEASCP003, CODE GENERATOR, ABSTRACT SYNTAX TO C++:'
.
"\n"
.
'Argument count '
.
$argument_count
.
' exceeds maximum argument limit '
. ARGUMENTS_MAX()
.
' for operator '
.
q{'}
. NAME_PERLOPS_PERLTYPES() .
q{'}
.
', dying'
.
"\n"
;
}
if
(((
ref
$arguments
->{children}->[0] ) eq
'ListElement_212'
) and (
exists
$arguments
->{children}->[0]->{children}->[0] ))
{
my
object
$arguments_subexpression
=
$arguments
->{children}->[0]->{children}->[0];
while
((
ref
$arguments_subexpression
) eq
'SubExpression_163'
) {
$arguments_subexpression
=
$arguments_subexpression
->{children}->[1];
}
if
((
ref
$arguments_subexpression
) eq
'SubExpression_160'
) {
die
'ERROR ECOGEASCP004, CODE GENERATOR, ABSTRACT SYNTAX TO C++:'
.
"\n"
.
'Attempt to return dereferenced array, please return arrayref instead, dying'
.
"\n"
;
}
elsif
((
ref
$arguments_subexpression
) eq
'SubExpression_162'
) {
die
'ERROR ECOGEASCP005, CODE GENERATOR, ABSTRACT SYNTAX TO C++:'
.
"\n"
.
'Attempt to return dereferenced hash, please return hashref instead, dying'
.
"\n"
;
}
}
my
string_hashref
$cpp_source_subgroup
=
$arguments
->ast_to_cpp__generate__CPPOPS_CPPTYPES(
$modes
,
$self
);
RPerl::Generator::source_group_append(
$cpp_source_group
,
$cpp_source_subgroup
);
$cpp_source_group
->{CPP} .=
$operator_void_named
->{children}->[2];
}
else
{
die
RPerl::Parser::rperl_rule__replace(
'ERROR ECOGEASCP000, CODE GENERATOR, ABSTRACT SYNTAX TO C++: Grammar rule '
. (
ref
$operator_void_named
)
.
' found where OperatorVoid_137, OperatorVoid_138, or OperatorVoid_139 expected, dying'
) .
"\n"
;
}
$cpp_source_group
->{CPP} .=
"\n"
;
return
$cpp_source_group
;
}
1;