Skip to content

Commit

Permalink
Generator, C++ Ops C++ Types, Misc, Part 10
Browse files Browse the repository at this point in the history
  • Loading branch information
wbraswell committed Jul 4, 2015
1 parent b83ab38 commit 20778a4
Show file tree
Hide file tree
Showing 19 changed files with 156 additions and 40 deletions.
8 changes: 5 additions & 3 deletions INSTALL
Expand Up @@ -74,9 +74,9 @@ $ perlbrew install-cpanm
# INSTALL RPERL & DEPENDENCIES, CPAN RELEASE VERSION, DO NOT MIX WITH 2B
################################################################################

$ cpanm RPerl # single-user install
$ cpanm RPerl
# OR
$ cpan RPerl # system-wide install
$ cpan RPerl # if cpanm is not installed

################################################################################
# STEP 2B. ONLY FOR RPERL DEVELOPERS
Expand All @@ -85,7 +85,9 @@ $ cpan RPerl # system-wide install

# Complete 'SET UP SSH KEYS' section of Git Notes before `git clone` below.
# https://github.com/wbraswell/lampuniversity.org/blob/master/docs/git_notes.txt
$ git clone git@github.com:wbraswell/rperl.git
$ git clone https://github.com/wbraswell/rperl.git # public git
# OR
$ git clone git@github.com:wbraswell/rperl.git # secured git
# OR
$ wget https://github.com/wbraswell/rperl/archive/master.zip; unzip master.zip

Expand Down
8 changes: 7 additions & 1 deletion lib/RPerl/Algorithm/Inefficient.pm
@@ -1,4 +1,10 @@
# START HERE: update tests, POD in RPerl.pm; compile Foo.pm; fix & compile Merge/Quick; finish all CPPOPS_CPPTYPES generation; fix & compile nbody; write user docs
# START HERE: compile Foo.pm; update tests; POD in RPerl.pm; basic user docs; CPAN; rperl.org; PerlMonks; blogs.perl.org; Facebook; Kickstarter
# START HERE: compile Foo.pm; update tests; POD in RPerl.pm; basic user docs; CPAN; rperl.org; PerlMonks; blogs.perl.org; Facebook; Kickstarter
# START HERE: compile Foo.pm; update tests; POD in RPerl.pm; basic user docs; CPAN; rperl.org; PerlMonks; blogs.perl.org; Facebook; Kickstarter

# THEN: fix RPerl/Test/ScopeTypeNameValue/program_5*_good.pl.DISABLED_PERL_V5_22; Merge/Quick; finish all CPPOPS_CPPTYPES generation; alioth nbody; full user docs
# THEN: fix RPerl/Test/ScopeTypeNameValue/program_5*_good.pl.DISABLED_PERL_V5_22; Merge/Quick; finish all CPPOPS_CPPTYPES generation; alioth nbody; full user docs
# THEN: fix RPerl/Test/ScopeTypeNameValue/program_5*_good.pl.DISABLED_PERL_V5_22; Merge/Quick; finish all CPPOPS_CPPTYPES generation; alioth nbody; full user docs

# [[[ HEADER ]]]
package RPerl::Algorithm::Inefficient;
Expand Down
7 changes: 7 additions & 0 deletions lib/RPerl/CodeBlock/Subroutine.pm
Expand Up @@ -107,7 +107,12 @@ our string_hashref_method $ast_to_cpp__generate_declaration__CPPOPS_CPPTYPES = s

if ( exists $arguments_optional->{children}->[0] ) {
my object $cpp_source_subgroup = $arguments_optional->{children}->[0]->ast_to_cpp__generate__CPPOPS_CPPTYPES($modes);
# RPerl::diag( 'in Subroutine->ast_to_cpp__generate_declaration__CPPOPS_CPPTYPES(), have $cpp_source_subgroup = ' . "\n" . RPerl::Parser::rperl_ast__dump($cpp_source_subgroup) . "\n" );
# DEV NOTE: don't use RPerl::Generator::source_group_append() due to cross-wiring H-from-CPP below
$cpp_source_group->{H} .= $cpp_source_subgroup->{CPP};
if ((exists $cpp_source_subgroup->{H_INCLUDES}) and (defined $cpp_source_subgroup->{H_INCLUDES})) {
$cpp_source_group->{H_INCLUDES} .= $cpp_source_subgroup->{H_INCLUDES};
}
}

$cpp_source_group->{H} .= ');';
Expand All @@ -134,6 +139,7 @@ our string_hashref_method $ast_to_cpp__generate__CPPOPS_CPPTYPES = sub {

if ( exists $arguments_optional->{children}->[0] ) {
$cpp_source_subgroup = $arguments_optional->{children}->[0]->ast_to_cpp__generate__CPPOPS_CPPTYPES($modes);
# RPerl::diag( 'in Subroutine->ast_to_cpp__generate__CPPOPS_CPPTYPES(), have $cpp_source_subgroup = ' . "\n" . RPerl::Parser::rperl_ast__dump($cpp_source_subgroup) . "\n" );
RPerl::Generator::source_group_append( $cpp_source_group, $cpp_source_subgroup );
}

Expand All @@ -151,6 +157,7 @@ our string_hashref_method $ast_to_cpp__generate__CPPOPS_CPPTYPES = sub {
next;
}
$cpp_source_subgroup = $operation->ast_to_cpp__generate__CPPOPS_CPPTYPES($modes);
# RPerl::diag( 'in Subroutine->ast_to_cpp__generate__CPPOPS_CPPTYPES(), have $cpp_source_subgroup = ' . "\n" . RPerl::Parser::rperl_ast__dump($cpp_source_subgroup) . "\n" );
RPerl::Generator::source_group_append( $cpp_source_group, $cpp_source_subgroup );
}

Expand Down
26 changes: 21 additions & 5 deletions lib/RPerl/CompileUnit/Module/Class/Generator.pm
Expand Up @@ -3,7 +3,7 @@ package RPerl::CompileUnit::Module::Class::Generator;
use strict;
use warnings;
use RPerl;
our $VERSION = 0.002_010;
our $VERSION = 0.002_060;

# [[[ OO INHERITANCE ]]]
use parent qw(RPerl::CompileUnit::Module::Class);
Expand Down Expand Up @@ -175,7 +175,7 @@ our string_hashref_method $ast_to_cpp__generate__CPPOPS_PERLTYPES = sub {

our string_hashref_method $ast_to_cpp__generate__CPPOPS_CPPTYPES = sub {
( my object $self, my string $package_name_underscores, my string_hashref $modes ) = @_;
my string_hashref $cpp_source_group = { H => q{}, CPP => q{} };
my string_hashref $cpp_source_group = { H_INCLUDES => q{}, H => q{}, CPP => q{} };

#RPerl::diag( 'in Class::Generator->ast_to_cpp__generate__CPPOPS_CPPTYPES(), received $self = ' . "\n" . RPerl::Parser::rperl_ast__dump($self) . "\n" );
#RPerl::diag( 'in Class::Generator->ast_to_cpp__generate__CPPOPS_CPPTYPES(), received $package_name_underscores = ' . $package_name_underscores . "\n");
Expand Down Expand Up @@ -205,11 +205,11 @@ our string_hashref_method $ast_to_cpp__generate__CPPOPS_CPPTYPES = sub {
my object $method_or_subroutine_star = $self->{children}->[9];

if ( $modes->{label} eq 'ON' ) {
$cpp_source_group->{H} .= '// [[[ INCLUDES & OO INHERITANCE INCLUDES ]]]' . "\n";
$cpp_source_group->{H_INCLUDES} .= '// [[[ INCLUDES & OO INHERITANCE INCLUDES ]]]' . "\n";
$cpp_source_group->{CPP} .= '// [[[ INCLUDES ]]]' . "\n";
}

$cpp_source_group->{H} .= <<EOL;
$cpp_source_group->{H_INCLUDES} .= <<EOL;
#include <RPerl.cpp> // -> RPerl.h -> (rperltypes_mode.h; rperltypes.h; HelperFunctions.cpp)
EOL

Expand All @@ -218,7 +218,7 @@ EOL
my string $parent_name_path = $parent_name;
$parent_name_path =~ s/::/\//gxms;
$parent_name_path .= '.cpp';
$cpp_source_group->{H} .= '#include <' . $parent_name_path . '>' . "\n";
$cpp_source_group->{H_INCLUDES} .= '#include <' . $parent_name_path . '>' . "\n";
$cpp_source_group->{CPP} .= '#include <__NEED_MODULE_HEADER_PATH>' . "\n"; # defer setting header include path until files are saved in Compiler

my string_hashref $cpp_source_subgroup;
Expand Down Expand Up @@ -280,12 +280,18 @@ EOL
push @{$method_declarations}, $cpp_source_subgroup->{H};
$cpp_source_subgroup = $method_or_subroutine->ast_to_cpp__generate__CPPOPS_CPPTYPES( $package_name_underscores, $modes );
push @{$method_definitions}, $cpp_source_subgroup->{CPP};
if ((exists $cpp_source_subgroup->{H_INCLUDES}) and (defined $cpp_source_subgroup->{H_INCLUDES})) {
$cpp_source_group->{H_INCLUDES} .= $cpp_source_subgroup->{H_INCLUDES};
}
}
elsif ( ( ref $method_or_subroutine ) eq 'MethodOrSubroutine_75' ) {
$cpp_source_subgroup = $method_or_subroutine->ast_to_cpp__generate_declaration__CPPOPS_CPPTYPES($modes);
push @{$subroutine_declarations}, $cpp_source_subgroup->{H};
$cpp_source_subgroup = $method_or_subroutine->ast_to_cpp__generate__CPPOPS_CPPTYPES($modes);
push @{$subroutine_definitions}, $cpp_source_subgroup->{CPP};
if ((exists $cpp_source_subgroup->{H_INCLUDES}) and (defined $cpp_source_subgroup->{H_INCLUDES})) {
$cpp_source_group->{H_INCLUDES} .= $cpp_source_subgroup->{H_INCLUDES};
}
}
else {
die RPerl::Parser::rperl_rule__replace( 'ERROR ECVGEASCP00, CODE GENERATOR, ABSTRACT SYNTAX TO C++, CPPOPS_CPPTYPES: grammar rule '
Expand Down Expand Up @@ -454,6 +460,16 @@ EOL
$cpp_source_group->{H} .= $cpp_source_tmp;
$cpp_source_group->{CPP} .= $cpp_source_tmp;

# deferred, prepend possibly-updated H_INCLUDES to H, discarding duplicates
my string $H_INCLUDES_UNIQUE = '';
foreach my string $H_INCLUDE (split /\n/, $cpp_source_group->{H_INCLUDES}) {
if ($H_INCLUDES_UNIQUE !~ /$H_INCLUDE/) {
$H_INCLUDES_UNIQUE .= $H_INCLUDE . "\n";
}
}
$cpp_source_group->{H} = $H_INCLUDES_UNIQUE . $cpp_source_group->{H} ;
delete $cpp_source_group->{H_INCLUDES};

return $cpp_source_group;
};

Expand Down
9 changes: 7 additions & 2 deletions lib/RPerl/Compiler.pm
Expand Up @@ -7,7 +7,7 @@ package RPerl::Compiler;
use strict;
use warnings;
use RPerl;
our $VERSION = 0.005_000;
our $VERSION = 0.005_010;

# [[[ CRITICS ]]]

Expand Down Expand Up @@ -57,7 +57,12 @@ our string_arrayref $find_dependencies = sub {
}
}
if ($file_line =~ /use\s+[\w:]+/xms) {
if (($file_line =~ /use\s+strict\s*;/) or ($file_line =~ /use\s+warnings\s*;/) or ($file_line =~ /use\s+RPerl::CompileUnit::Module::Class\s*;/) or ($file_line =~ /use\s+RPerl\s*;/) or ($file_line =~ /use\s+parent/)) {
if (($file_line =~ /use\s+strict\s*;/) or
($file_line =~ /use\s+warnings\s*;/) or
($file_line =~ /use\s+RPerl::CompileUnit::Module::Class\s*;/) or
($file_line =~ /use\s+RPerl\s*;/) or
($file_line =~ /use\s+parent/) or
($file_line =~ /use\s+constant/)) {
next;
}
$file_line =~ s/^\s*use\s+([\w:]+)\s*;\s*$/$1/gxms; # remove everything except the package name
Expand Down
2 changes: 2 additions & 0 deletions lib/RPerl/Operation/Expression.pm
Expand Up @@ -71,13 +71,15 @@ our string_hashref_method $ast_to_cpp__generate__CPPOPS_CPPTYPES = sub {
if ( ( ref $self ) eq 'Operation_76' ) { # Operation -> Expression ';'
$cpp_source_subgroup
= $self->{children}->[0]->ast_to_cpp__generate__CPPOPS_CPPTYPES($modes);
# RPerl::diag( 'in Expression->ast_to_cpp__generate__CPPOPS_CPPTYPES(), have $cpp_source_subgroup = ' . "\n" . RPerl::Parser::rperl_ast__dump($cpp_source_subgroup) . "\n" );
RPerl::Generator::source_group_append( $cpp_source_group,
$cpp_source_subgroup );
$cpp_source_group->{CPP} .= $self->{children}->[1] . "\n"; # semicolon
}
elsif ( ( ref $self ) eq 'SubExpression_129' ) { # SubExpression -> Expression
$cpp_source_subgroup
= $self->{children}->[0]->ast_to_cpp__generate__CPPOPS_CPPTYPES($modes);
# RPerl::diag( 'in Expression->ast_to_cpp__generate__CPPOPS_CPPTYPES(), have $cpp_source_subgroup = ' . "\n" . RPerl::Parser::rperl_ast__dump($cpp_source_subgroup) . "\n" );
RPerl::Generator::source_group_append( $cpp_source_group,
$cpp_source_subgroup );
}
Expand Down
1 change: 1 addition & 0 deletions lib/RPerl/Operation/Expression/Operator.pm
Expand Up @@ -61,6 +61,7 @@ our string_hashref_method $ast_to_cpp__generate__CPPOPS_CPPTYPES = sub {
my string $self_class = ref $self;
if ( $self_class eq 'Expression_124' ) {
my string_hashref $cpp_source_subgroup = $self->{children}->[0]->ast_to_cpp__generate__CPPOPS_CPPTYPES($modes);
# RPerl::diag( 'in Operator->ast_to_cpp__generate__CPPOPS_CPPTYPES(), have $cpp_source_subgroup = ' . "\n" . RPerl::Parser::rperl_ast__dump($cpp_source_subgroup) . "\n" );
RPerl::Generator::source_group_append( $cpp_source_group, $cpp_source_subgroup );
}
else {
Expand Down
31 changes: 24 additions & 7 deletions lib/RPerl/Operation/Expression/Operator/Math/IncrementDecrement.pm
Expand Up @@ -3,7 +3,7 @@ package RPerl::Operation::Expression::Operator::Math::IncrementDecrement;
use strict;
use warnings;
use RPerl;
our $VERSION = 0.001_000;
our $VERSION = 0.002_000;

# [[[ OO INHERITANCE ]]]
use parent qw(RPerl::Operation::Expression::Operator::Math);
Expand Down Expand Up @@ -58,15 +58,32 @@ our string_hashref_method $ast_to_cpp__generate__CPPOPS_PERLTYPES = sub {
return $cpp_source_group;
};

# DEV NOTE: PERLOPS_PERLTYPES & CPPOPS_CPPTYPES code generation are exactly equivalent
our string_hashref_method $ast_to_cpp__generate__CPPOPS_CPPTYPES = sub {
( my object $self, my string_hashref $modes) = @_;
my string_hashref $cpp_source_group
= {
CPP => q{// <<< RP::O::E::O::M::ID __DUMMY_SOURCE_CODE CPPOPS_CPPTYPES >>>}
. "\n"
};
my string_hashref $cpp_source_group = { CPP => q{} };

# RPerl::diag( 'in Operator::Math::IncrementDecrement->ast_to_cpp__generate__CPPOPS_CPPTYPES(), received $self = ' . "\n" . RPerl::Parser::rperl_ast__dump($self) . "\n" );

my string $self_class = ref $self;
if ( $self_class eq 'Operator_83' ) { # Operator -> OP03_MATH_INC_DEC Variable
$cpp_source_group->{CPP} .= $self->{children}->[0];
my string_hashref $cpp_source_subgroup = $self->{children}->[1]->ast_to_cpp__generate__CPPOPS_CPPTYPES($modes);
RPerl::Generator::source_group_append( $cpp_source_group, $cpp_source_subgroup );
}
elsif ( $self_class eq 'Operator_84' ) { # Operator -> Variable OP03_MATH_INC_DEC
my string_hashref $cpp_source_subgroup = $self->{children}->[0]->ast_to_cpp__generate__CPPOPS_CPPTYPES($modes);
RPerl::Generator::source_group_append( $cpp_source_group, $cpp_source_subgroup );
$cpp_source_group->{CPP} .= $self->{children}->[1];
}
else {
die RPerl::Parser::rperl_rule__replace(
'ERROR ECVGEASCP00, CODE GENERATOR, ABSTRACT SYNTAX TO C++: grammar rule '
. $self_class
. ' found where Operator_83 or Operator_84 expected, dying' )
. "\n";
}

#...
return $cpp_source_group;
};

Expand Down
Expand Up @@ -3,7 +3,7 @@ package RPerl::Operation::Expression::Operator::Math::MultiplyDivideModulo;
use strict;
use warnings;
use RPerl;
our $VERSION = 0.001_000;
our $VERSION = 0.002_000;

# [[[ OO INHERITANCE ]]]
use parent qw(RPerl::Operation::Expression::Operator::Math);
Expand Down Expand Up @@ -55,15 +55,29 @@ our string_hashref_method $ast_to_cpp__generate__CPPOPS_PERLTYPES = sub {
return $cpp_source_group;
};

# DEV NOTE: PERLOPS_PERLTYPES & CPPOPS_CPPTYPES code generation are exactly equivalent
our string_hashref_method $ast_to_cpp__generate__CPPOPS_CPPTYPES = sub {
( my object $self, my string_hashref $modes) = @_;
my string_hashref $cpp_source_group
= {
CPP => q{// <<< RP::O::E::O::M::MDM __DUMMY_SOURCE_CODE CPPOPS_CPPTYPES >>>}
. "\n"
};
my string_hashref $cpp_source_group = { CPP => q{} };

# RPerl::diag( 'in Operator::Math::MultiplyDivideModulo->ast_to_cpp__generate__CPPOPS_CPPTYPES(), received $self = ' . "\n" . RPerl::Parser::rperl_ast__dump($self) . "\n" );

my string $self_class = ref $self;
if ( $self_class eq 'Operator_90' ) { # Operator -> SubExpression OP07_MATH_MULT_DIV_MOD SubExpression
my string_hashref $cpp_source_subgroup = $self->{children}->[0]->ast_to_cpp__generate__CPPOPS_CPPTYPES($modes);
RPerl::Generator::source_group_append( $cpp_source_group, $cpp_source_subgroup );
$cpp_source_group->{CPP} .= q{ } . $self->{children}->[1] . q{ };
$cpp_source_subgroup = $self->{children}->[2]->ast_to_cpp__generate__CPPOPS_CPPTYPES($modes);
RPerl::Generator::source_group_append( $cpp_source_group, $cpp_source_subgroup );
}
else {
die RPerl::Parser::rperl_rule__replace(
'ERROR ECVGEASCP00, CODE GENERATOR, ABSTRACT SYNTAX TO C++: grammar rule '
. $self_class
. ' found where Operator_90 expected, dying' )
. "\n";
}

#...
return $cpp_source_group;
};

Expand Down
27 changes: 20 additions & 7 deletions lib/RPerl/Operation/Expression/Operator/Math/Negative.pm
Expand Up @@ -3,7 +3,7 @@ package RPerl::Operation::Expression::Operator::Math::Negative;
use strict;
use warnings;
use RPerl;
our $VERSION = 0.001_000;
our $VERSION = 0.002_000;

# [[[ OO INHERITANCE ]]]
use parent qw(RPerl::Operation::Expression::Operator::Math);
Expand Down Expand Up @@ -54,15 +54,28 @@ our string_hashref_method $ast_to_cpp__generate__CPPOPS_PERLTYPES = sub {
return $cpp_source_group;
};

# DEV NOTE: PERLOPS_PERLTYPES & CPPOPS_CPPTYPES code generation are exactly equivalent
our string_hashref_method $ast_to_cpp__generate__CPPOPS_CPPTYPES = sub {
( my object $self, my string_hashref $modes) = @_;
my string_hashref $cpp_source_group
= {
CPP => q{// <<< RP::O::E::O::M::N __DUMMY_SOURCE_CODE CPPOPS_CPPTYPES >>>}
. "\n"
};
my string_hashref $cpp_source_group = { CPP => q{} };

# RPerl::diag( 'in Operator::Math::Negative->ast_to_cpp__generate__CPPOPS_CPPTYPES(), received $self = ' . "\n" . RPerl::Parser::rperl_ast__dump($self) . "\n" );

my string $self_class = ref $self;
if ( $self_class eq 'Operator_87' ) { # Operator -> OP05_MATH_NEG_LPAREN SubExpression ')'
$cpp_source_group->{CPP} .= $self->{children}->[0] . q{ };
my string_hashref $cpp_source_subgroup = $self->{children}->[1]->ast_to_cpp__generate__CPPOPS_CPPTYPES($modes);
RPerl::Generator::source_group_append( $cpp_source_group, $cpp_source_subgroup );
$cpp_source_group->{CPP} .= q{ } . $self->{children}->[2];
}
else {
die RPerl::Parser::rperl_rule__replace(
'ERROR ECVGEASCP00, CODE GENERATOR, ABSTRACT SYNTAX TO C++: grammar rule '
. $self_class
. ' found where Operator_87 expected, dying' )
. "\n";
}

#...
return $cpp_source_group;
};

Expand Down
32 changes: 25 additions & 7 deletions lib/RPerl/Operation/Expression/Operator/Math/Power.pm
Expand Up @@ -3,7 +3,7 @@ package RPerl::Operation::Expression::Operator::Math::Power;
use strict;
use warnings;
use RPerl;
our $VERSION = 0.001_000;
our $VERSION = 0.002_000;

# [[[ OO INHERITANCE ]]]
use parent qw(RPerl::Operation::Expression::Operator::Math);
Expand Down Expand Up @@ -55,15 +55,33 @@ our string_hashref_method $ast_to_cpp__generate__CPPOPS_PERLTYPES = sub {
return $cpp_source_group;
};


our string_hashref_method $ast_to_cpp__generate__CPPOPS_CPPTYPES = sub {
( my object $self, my string_hashref $modes) = @_;
my string_hashref $cpp_source_group
= {
CPP => q{// <<< RP::O::E::O::M::P __DUMMY_SOURCE_CODE CPPOPS_CPPTYPES >>>}
. "\n"
};
my string_hashref $cpp_source_group = { H_INCLUDES => q{}, CPP => q{} };

# RPerl::diag( 'in Operator::Math::Power->ast_to_cpp__generate__CPPOPS_CPPTYPES(), received $self = ' . "\n" . RPerl::Parser::rperl_ast__dump($self) . "\n" );

my string $self_class = ref $self;
if ( $self_class eq 'Operator_85' ) { # Operator -> SubExpression OP04_MATH_POW SubExpression
$cpp_source_group->{H_INCLUDES} .= '#include <math.h>' . "\n";

$cpp_source_group->{CPP} .= 'pow(';
my string_hashref $cpp_source_subgroup = $self->{children}->[0]->ast_to_cpp__generate__CPPOPS_CPPTYPES($modes);
RPerl::Generator::source_group_append( $cpp_source_group, $cpp_source_subgroup );
$cpp_source_group->{CPP} .= ', ';
$cpp_source_subgroup = $self->{children}->[2]->ast_to_cpp__generate__CPPOPS_CPPTYPES($modes);
RPerl::Generator::source_group_append( $cpp_source_group, $cpp_source_subgroup );
$cpp_source_group->{CPP} .= ')';
}
else {
die RPerl::Parser::rperl_rule__replace(
'ERROR ECVGEASCP00, CODE GENERATOR, ABSTRACT SYNTAX TO C++: grammar rule '
. $self_class
. ' found where Operator_85 expected, dying' )
. "\n";
}

#...
return $cpp_source_group;
};

Expand Down
1 change: 1 addition & 0 deletions lib/RPerl/Operation/Expression/SubExpression.pm
Expand Up @@ -83,6 +83,7 @@ our string_hashref_method $ast_to_cpp__generate__CPPOPS_CPPTYPES = sub {
{
my string_hashref $cpp_source_subgroup
= $self->{children}->[0]->ast_to_cpp__generate__CPPOPS_CPPTYPES($modes);
# RPerl::diag( 'in SubExpression->ast_to_cpp__generate__CPPOPS_CPPTYPES(), have $cpp_source_subgroup = ' . "\n" . RPerl::Parser::rperl_ast__dump($cpp_source_subgroup) . "\n" );
RPerl::Generator::source_group_append( $cpp_source_group,
$cpp_source_subgroup );
}
Expand Down
1 change: 1 addition & 0 deletions lib/RPerl/Operation/Statement.pm
Expand Up @@ -87,6 +87,7 @@ our string_hashref_method $ast_to_cpp__generate__CPPOPS_CPPTYPES = sub {
or ( $child0_class eq 'Statement_147' ) )
{
$cpp_source_subgroup = $child0->ast_to_cpp__generate__CPPOPS_CPPTYPES($modes);
# RPerl::diag( 'in Statement->ast_to_cpp__generate__CPPOPS_CPPTYPES(), have $cpp_source_subgroup = ' . "\n" . RPerl::Parser::rperl_ast__dump($cpp_source_subgroup) . "\n" );
RPerl::Generator::source_group_append( $cpp_source_group, $cpp_source_subgroup );
}

Expand Down

0 comments on commit 20778a4

Please sign in to comment.