our
$VERSION
= 0.002_100;
our
hashref
$properties
= {};
sub
ast_to_rperl__generate {
{
my
string_hashref::method
$RETURN_TYPE
};
(
my
object
$self
,
my
string_hashref
$modes
) =
@ARG
;
my
string_hashref
$rperl_source_group
= {
PMC
=>
q{}
};
my
string
$self_class
=
ref
$self
;
if
(
$self_class
eq
'Statement_172'
) {
$self
=
$self
->{children}->[0];
$self_class
=
ref
$self
;
}
if
(
$self_class
eq
'Conditional_184'
) {
my
string
$if
=
$self
->{children}->[0];
my
string
$left_paren
=
$self
->{children}->[1];
my
object
$subexpression
=
$self
->{children}->[2];
my
string
$right_paren
=
$self
->{children}->[3];
my
object
$codeblock
=
$self
->{children}->[4];
my
object
$elsif_star
=
$self
->{children}->[5];
my
object
$else_optional
=
$self
->{children}->[6];
$rperl_source_group
->{PMC} .=
$if
.
q{ }
.
$left_paren
.
q{ }
;
my
object
$rperl_source_subgroup
=
$subexpression
->ast_to_rperl__generate(
$modes
);
RPerl::Generator::source_group_append(
$rperl_source_group
,
$rperl_source_subgroup
);
$rperl_source_group
->{PMC} .=
q{ }
.
$right_paren
.
q{ }
;
$rperl_source_subgroup
=
$codeblock
->ast_to_rperl__generate(
$modes
);
RPerl::Generator::source_group_append(
$rperl_source_group
,
$rperl_source_subgroup
);
while
(
exists
$elsif_star
->{children}->[0] ) {
my
string
$elsif
=
'elsif'
;
my
string
$elsif_left_paren
=
shift
@{
$elsif_star
->{children} };
my
object
$elsif_subexpression
=
shift
@{
$elsif_star
->{children} };
my
string
$elsif_right_paren
=
')'
;
my
object
$elsif_codeblock
=
shift
@{
$elsif_star
->{children} };
$rperl_source_group
->{PMC}
.=
$elsif
.
q{ }
.
$elsif_left_paren
->{attr} .
q{ }
;
$rperl_source_subgroup
=
$elsif_subexpression
->ast_to_rperl__generate(
$modes
);
RPerl::Generator::source_group_append(
$rperl_source_group
,
$rperl_source_subgroup
);
$rperl_source_group
->{PMC} .=
q{ }
.
$elsif_right_paren
.
q{ }
;
$rperl_source_subgroup
=
$elsif_codeblock
->ast_to_rperl__generate(
$modes
);
RPerl::Generator::source_group_append(
$rperl_source_group
,
$rperl_source_subgroup
);
}
if
(
exists
$else_optional
->{children}->[0] ) {
my
string
$else
=
'else'
;
my
object
$else_codeblock
=
$else_optional
->{children}->[0];
$rperl_source_group
->{PMC} .=
$else
.
q{ }
;
$rperl_source_subgroup
=
$else_codeblock
->ast_to_rperl__generate(
$modes
);
RPerl::Generator::source_group_append(
$rperl_source_group
,
$rperl_source_subgroup
);
}
}
else
{
die
RPerl::Parser::rperl_rule__replace(
'ERROR ECOGEASRP000, CODE GENERATOR, ABSTRACT SYNTAX TO RPERL: Grammar rule '
.
$self_class
.
' found where Conditional_184 expected, dying'
)
.
"\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::C __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
) =
@ARG
;
my
string_hashref
$cpp_source_group
= {
CPP
=>
q{}
};
my
string
$self_class
=
ref
$self
;
if
(
$self_class
eq
'Statement_172'
) {
$self
=
$self
->{children}->[0];
$self_class
=
ref
$self
;
}
if
(
$self_class
eq
'Conditional_184'
) {
my
string
$if
=
$self
->{children}->[0];
my
string
$left_paren
=
$self
->{children}->[1];
my
object
$subexpression
=
$self
->{children}->[2];
my
string
$right_paren
=
$self
->{children}->[3];
my
object
$codeblock
=
$self
->{children}->[4];
my
object
$elsif_star
=
$self
->{children}->[5];
my
object
$else_optional
=
$self
->{children}->[6];
$cpp_source_group
->{CPP} .=
$if
.
q{ }
.
$left_paren
.
q{ }
;
my
object
$cpp_source_subgroup
=
$subexpression
->ast_to_cpp__generate__CPPOPS_CPPTYPES(
$modes
);
RPerl::Generator::source_group_append(
$cpp_source_group
,
$cpp_source_subgroup
);
$cpp_source_group
->{CPP} .=
q{ }
.
$right_paren
.
q{ }
;
$cpp_source_subgroup
=
$codeblock
->ast_to_cpp__generate__CPPOPS_CPPTYPES(
undef
,
$modes
);
RPerl::Generator::source_group_append(
$cpp_source_group
,
$cpp_source_subgroup
);
while
(
exists
$elsif_star
->{children}->[0] ) {
my
string
$elsif
=
'else if'
;
my
string
$elsif_left_paren
=
shift
@{
$elsif_star
->{children} };
my
object
$elsif_subexpression
=
shift
@{
$elsif_star
->{children} };
my
string
$elsif_right_paren
=
')'
;
my
object
$elsif_codeblock
=
shift
@{
$elsif_star
->{children} };
$cpp_source_group
->{CPP}
.=
$elsif
.
q{ }
.
$elsif_left_paren
->{attr} .
q{ }
;
$cpp_source_subgroup
=
$elsif_subexpression
->ast_to_cpp__generate__CPPOPS_CPPTYPES(
$modes
);
RPerl::Generator::source_group_append(
$cpp_source_group
,
$cpp_source_subgroup
);
$cpp_source_group
->{CPP} .=
q{ }
.
$elsif_right_paren
.
q{ }
;
$cpp_source_subgroup
=
$elsif_codeblock
->ast_to_cpp__generate__CPPOPS_CPPTYPES(
undef
,
$modes
);
RPerl::Generator::source_group_append(
$cpp_source_group
,
$cpp_source_subgroup
);
}
if
(
exists
$else_optional
->{children}->[0] ) {
my
string
$else
=
'else'
;
my
object
$else_codeblock
=
$else_optional
->{children}->[0];
$cpp_source_group
->{CPP} .=
$else
.
q{ }
;
$cpp_source_subgroup
=
$else_codeblock
->ast_to_cpp__generate__CPPOPS_CPPTYPES(
undef
,
$modes
);
RPerl::Generator::source_group_append(
$cpp_source_group
,
$cpp_source_subgroup
);
}
}
else
{
die
RPerl::Parser::rperl_rule__replace(
'ERROR ECOGEASCP000, CODE GENERATOR, ABSTRACT SYNTAX TO C++: Grammar rule '
.
$self_class
.
' found where Conditional_184 expected, dying'
)
.
"\n"
;
}
return
$cpp_source_group
;
}
1;