File Coverage

blib/lib/RPerl/Operation/Expression/SubExpression/Literal/Number.pm
Criterion Covered Total %
statement 34 43 79.0
branch 4 8 50.0
condition n/a
subroutine 7 8 87.5
pod n/a
total 45 59 76.2


line stmt bran cond sub pod time code
1             # [[[ HEADER ]]]
2             package RPerl::Operation::Expression::SubExpression::Literal::Number;
3 3     3   21 use strict;
  3         7  
  3         96  
4 3     3   18 use warnings;
  3         7  
  3         82  
5 3     3   19 use RPerl::AfterSubclass;
  3         7  
  3         530  
6             our $VERSION = 0.002_000;
7              
8             # [[[ OO INHERITANCE ]]]
9 3     3   24 use parent qw(RPerl::Operation::Expression::SubExpression::Literal);
  3         8  
  3         20  
10 3     3   236 use RPerl::Operation::Expression::SubExpression::Literal;
  3         12  
  3         1139  
11              
12             # [[[ OO PROPERTIES ]]]
13             our hashref $properties = {};
14              
15             # [[[ SUBROUTINES & OO METHODS ]]]
16              
17             sub ast_to_rperl__generate {
18 1983     1983   3613 { my string_hashref::method $RETURN_TYPE };
  1983         3866  
19 1983         4436 ( my object $self, my string_hashref $modes) = @ARG;
20 1983         5994 my string_hashref $rperl_source_group = { PMC => q{} };
21              
22             # RPerl::diag( 'in Literal::Number->ast_to_rperl__generate(), received $self = ' . "\n" . RPerl::Parser::rperl_ast__dump($self) . "\n" );
23              
24 1983 50       7265 if ( ( ref $self ) ne 'Literal_248' ) {
25 0         0 die RPerl::Parser::rperl_rule__replace(
26             'ERROR ECOGEASRP00, CODE GENERATOR, ABSTRACT SYNTAX TO RPERL: Grammar rule '
27             . ( ref $self )
28             . ' found where Literal_248 expected, dying' )
29             . "\n";
30             }
31            
32             # Literal -> LITERAL_NUMBER
33 1983         5979 my string $value = $self->{children}->[0];
34 1983         7800 my string $value_type = main::type($value);
35 1983 50       6901 if ($value_type eq 'integer') {
    50          
36 0         0 $rperl_source_group->{PMC} .= integer_to_string($value);
37             }
38             elsif ($value_type eq 'number') {
39 0         0 $rperl_source_group->{PMC} .= number_to_string($value);
40             }
41             else {
42 1983         4794 $rperl_source_group->{PMC} .= $value;
43             }
44 1983         8931 return $rperl_source_group;
45             }
46              
47             sub ast_to_cpp__generate__CPPOPS_PERLTYPES {
48 0     0   0 { my string_hashref::method $RETURN_TYPE };
  0         0  
49 0         0 ( my object $self, my string_hashref $modes) = @ARG;
50 0         0 my string_hashref $cpp_source_group
51             = { CPP => q{// <<< RP::O::E::SE::L::N __DUMMY_SOURCE_CODE CPPOPS_PERLTYPES >>>}
52             . "\n" };
53              
54             #...
55 0         0 return $cpp_source_group;
56             }
57              
58             sub ast_to_cpp__generate__CPPOPS_CPPTYPES {
59 55     55   96 { my string_hashref::method $RETURN_TYPE };
  55         87  
60 55         116 ( my object $self, my string_hashref $modes) = @ARG;
61 55         135 my string_hashref $cpp_source_group = { CPP => q{} };
62              
63             # RPerl::diag( 'in Literal::Number->ast_to_cpp__generate__CPPOPS_CPPTYPES(), received $self = ' . "\n" . RPerl::Parser::rperl_ast__dump($self) . "\n" );
64              
65 55 50       172 if ( ( ref $self ) ne 'Literal_248' ) {
66 0         0 die RPerl::Parser::rperl_rule__replace(
67             'ERROR ECOGEASCP00, CODE GENERATOR, ABSTRACT SYNTAX TO C++: Grammar rule '
68             . ( ref $self )
69             . ' found where Literal_248 expected, dying' )
70             . "\n";
71             }
72            
73             # Literal -> LITERAL_NUMBER
74 55         162 my string $value = $self->{children}->[0];
75             # DEV NOTE: don't use RPerl-style underscores in C++ literal numbers
76 55         118 $value =~ s/_//gxms; # strip underscores
77 55         122 $cpp_source_group->{CPP} .= $value;
78 55         178 return $cpp_source_group;
79             }
80              
81             1; # end of class