our
$VERSION
= 0.002_000;
our
hashref
$properties
= {};
sub
ast_to_rperl__generate {
{
my
string_hashref::method
$RETURN_TYPE
};
(
my
object
$self
,
my
string
$package_name_underscores
,
my
string_hashref
$modes
) =
@ARG
;
my
string_hashref
$rperl_source_group
= {};
my
string
$self_class
=
ref
$self
;
if
( (
$self_class
) eq
'Module_24'
) {
$self
=
$self
->{children}->[0];
$self_class
=
ref
$self
;
}
if
( (
$self_class
) ne
'Package_36'
) {
die
RPerl::Parser::rperl_rule__replace(
'ERROR ECOGEASRP000, CODE GENERATOR, ABSTRACT SYNTAX TO RPERL: Grammar rule '
. (
$self_class
)
.
' found where Module_24 or Package_36 expected, dying'
)
.
"\n"
;
}
my
object
$critic_star
=
$self
->{children}->[0];
my
object
$exports_optional
=
$self
->{children}->[1];
my
object
$include_star
=
$self
->{children}->[2];
my
object
$constant_star
=
$self
->{children}->[3];
my
object
$subroutine_plus
=
$self
->{children}->[4];
my
string
$retval_literal_number
=
$self
->{children}->[5];
my
string
$retval_semicolon
=
$self
->{children}->[6];
my
string_hashref
$rperl_source_subgroup
;
if
(
exists
$critic_star
->{children}->[0] ) {
if
(
$modes
->{label} eq
'ON'
) {
$rperl_source_group
->{PMC} .=
'# [[[ CRITICS ]]]'
.
"\n"
;
}
}
foreach
my
object
$critic
( @{
$critic_star
->{children} } ) {
$rperl_source_subgroup
=
$critic
->ast_to_rperl__generate(
$modes
);
RPerl::Generator::source_group_append(
$rperl_source_group
,
$rperl_source_subgroup
);
}
if
(
exists
$exports_optional
->{children}->[0] ) {
if
(
$modes
->{label} eq
'ON'
) {
$rperl_source_group
->{PMC} .=
"\n"
.
'# [[[ EXPORTS ]]]'
.
"\n"
;
}
my
object
$exports
=
$exports_optional
->{children}->[0];
my
string
$use_exporter
=
$exports
->{children}->[0];
my
string
$export
=
$exports
->{children}->[1];
my
string
$export_ok
=
$exports
->{children}->[2];
$rperl_source_group
->{PMC} .=
$use_exporter
;
if
(
exists
$export
->{children}->[0] ) {
$rperl_source_group
->{PMC} .=
$export
->{children}->[0]->{attr} .
$export
->{children}->[1]->{attr} .
';'
.
"\n"
;
}
if
(
exists
$export_ok
->{children}->[0] ) {
$rperl_source_group
->{PMC} .=
$export_ok
->{children}->[0]->{attr} .
$export_ok
->{children}->[1]->{attr} .
';'
.
"\n"
;
}
}
if
(
exists
$include_star
->{children}->[0] ) {
if
(
$modes
->{label} eq
'ON'
) {
$rperl_source_group
->{PMC} .=
"\n"
.
'# [[[ INCLUDES ]]]'
.
"\n"
;
}
}
foreach
my
object
$include
( @{
$include_star
->{children} } ) {
$rperl_source_subgroup
=
$include
->ast_to_rperl__generate(
$modes
);
RPerl::Generator::source_group_append(
$rperl_source_group
,
$rperl_source_subgroup
);
}
if
(
exists
$constant_star
->{children}->[0] ) {
if
(
$modes
->{label} eq
'ON'
) {
$rperl_source_group
->{PMC} .=
"\n"
.
'# [[[ CONSTANTS ]]]'
.
"\n"
;
}
}
foreach
my
object
$constant
( @{
$constant_star
->{children} } ) {
$rperl_source_subgroup
=
$constant
->ast_to_rperl__generate(
$modes
);
RPerl::Generator::source_group_append(
$rperl_source_group
,
$rperl_source_subgroup
);
}
if
(
$modes
->{label} eq
'ON'
) {
$rperl_source_group
->{PMC} .=
"\n"
.
'# [[[ SUBROUTINES ]]]'
.
"\n"
;
}
foreach
my
object
$subroutine
(
@{
$subroutine_plus
->{children} }
)
{
$rperl_source_subgroup
=
$subroutine
->ast_to_rperl__generate(
$modes
);
RPerl::Generator::source_group_append(
$rperl_source_group
,
$rperl_source_subgroup
);
}
if
(
$modes
->{label} eq
'ON'
) {
$rperl_source_group
->{PMC}
.=
"\n"
.
$retval_literal_number
.
$retval_semicolon
.
' # end of package'
.
"\n"
;
}
else
{
$rperl_source_group
->{PMC}
.=
$retval_literal_number
.
$retval_semicolon
.
"\n"
;
}
return
$rperl_source_group
;
}
sub
ast_to_cpp__generate__CPPOPS_PERLTYPES {
{
my
string_hashref::method
$RETURN_TYPE
};
(
my
object
$self
,
my
string
$package_name_underscores
,
my
string_hashref
$modes
) =
@ARG
;
my
string_hashref
$cpp_source_group
= {
CPP
=>
q{// <<< RP::CU::M::P __DUMMY_SOURCE_CODE CPPOPS_PERLTYPES >>>}
.
"\n"
,
H
=>
q{// <<< RP::CU::M::P __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
$package_name_underscores
,
my
string_hashref
$modes
) =
@ARG
;
my
string_hashref
$cpp_source_group
= {
CPP
=>
q{// <<< RP::CU::M::P __DUMMY_SOURCE_CODE CPPOPS_CPPTYPES >>>}
.
"\n"
,
H
=>
q{// <<< RP::CU::M::P __DUMMY_SOURCE_CODE CPPOPS_CPPTYPES >>>}
.
"\n"
,
};
return
$cpp_source_group
;
}
1;