[libmarpa-r2-perl] 13/14: adding marpa_g_force_valued(): t+

Jonas Smedegaard dr at jones.dk
Sat May 17 21:24:09 UTC 2014


This is an automated email from the git hooks/post-receive script.

js pushed a commit to annotated tag Marpa-R2-2.085_003
in repository libmarpa-r2-perl.

commit 6715fca504d80b62f5cca743283a35fdd7bfae94
Author: Jeffrey Kegler <JKEGL at cpan.org>
Date:   Mon Apr 21 20:01:32 2014 -0700

    adding marpa_g_force_valued(): t+
---
 cpan/pod/Advanced/Thin.pod          |   4 +-
 cpan/t/{thin_eq.t => thin_deprec.t} | 149 +++++++++++++++---------------------
 cpan/t/thin_eq.t                    |   8 +-
 3 files changed, 65 insertions(+), 96 deletions(-)

diff --git a/cpan/pod/Advanced/Thin.pod b/cpan/pod/Advanced/Thin.pod
index e8aea3c..d142c08 100644
--- a/cpan/pod/Advanced/Thin.pod
+++ b/cpan/pod/Advanced/Thin.pod
@@ -1476,6 +1476,7 @@ name: Thin example
 normalize-whitespace: 1
 
     my $grammar = Marpa::R2::Thin::G->new( { if => 1 } );
+    $grammar->force_valued();
     my $symbol_S = $grammar->symbol_new();
     my $symbol_E = $grammar->symbol_new();
     $grammar->start_symbol_set($symbol_S);
@@ -1522,9 +1523,6 @@ normalize-whitespace: 1
     my @actual_values = ();
     while ( $tree->next() ) {
         my $valuator = Marpa::R2::Thin::V->new($tree);
-        $valuator->rule_is_valued_set( $op_rule_id,     1 );
-        $valuator->rule_is_valued_set( $start_rule_id,  1 );
-        $valuator->rule_is_valued_set( $number_rule_id, 1 );
         my @stack = ();
         STEP: while ( 1 ) {
             my ( $type, @step_data ) = $valuator->step();
diff --git a/cpan/t/thin_eq.t b/cpan/t/thin_deprec.t
similarity index 77%
copy from cpan/t/thin_eq.t
copy to cpan/t/thin_deprec.t
index b41038c..c4d4253 100644
--- a/cpan/t/thin_eq.t
+++ b/cpan/t/thin_deprec.t
@@ -14,14 +14,14 @@
 # General Public License along with Marpa::R2.  If not, see
 # http://www.gnu.org/licenses/.
 
-# Testing an ambiguous equation
-# using the thin interface
+# Testing using deprecated methods of
+# the thin interface
 
 use 5.010;
 use strict;
 use warnings;
 
-use Test::More tests => 12;
+use Test::More tests => 13;
 
 use lib 'inc';
 use Marpa::R2::Test;
@@ -29,10 +29,8 @@ use English qw( -no_match_vars );
 use Fatal qw( close open );
 use Marpa::R2;
 
-# Marpa::R2::Display
-# name: Thin example
-
 my $grammar = Marpa::R2::Thin::G->new( { if => 1 } );
+$grammar->force_valued();
 my $symbol_S = $grammar->symbol_new();
 my $symbol_E = $grammar->symbol_new();
 $grammar->start_symbol_set($symbol_S);
@@ -42,6 +40,7 @@ my $start_rule_id = $grammar->rule_new( $symbol_S, [$symbol_E] );
 my $op_rule_id =
     $grammar->rule_new( $symbol_E, [ $symbol_E, $symbol_op, $symbol_E ] );
 my $number_rule_id = $grammar->rule_new( $symbol_E, [$symbol_number] );
+
 $grammar->precompute();
 
 my $recce = Marpa::R2::Thin::R->new($grammar);
@@ -79,11 +78,8 @@ my $tree          = Marpa::R2::Thin::T->new($order);
 my @actual_values = ();
 while ( $tree->next() ) {
     my $valuator = Marpa::R2::Thin::V->new($tree);
-    $valuator->rule_is_valued_set( $op_rule_id,     1 );
-    $valuator->rule_is_valued_set( $start_rule_id,  1 );
-    $valuator->rule_is_valued_set( $number_rule_id, 1 );
-    my @stack = ();
-    STEP: while ( 1 ) {
+    my @stack    = ();
+    STEP: while (1) {
         my ( $type, @step_data ) = $valuator->step();
         last STEP if not defined $type;
         if ( $type eq 'MARPA_STEP_TOKEN' ) {
@@ -126,12 +122,10 @@ while ( $tree->next() ) {
             die "Unknown rule $rule_id";
         } ## end if ( $type eq 'MARPA_STEP_RULE' )
         die "Unexpected step type: $type";
-    } ## end while ( my ( $type, @step_data ) = $valuator->step() )
+    } ## end STEP: while (1)
     push @actual_values, $stack[0];
 } ## end while ( $tree->next() )
 
-# Marpa::R2::Display::End
-
 my %expected_value = (
     '(2-(0*(3+1))) == 2' => 1,
     '(((2-0)*3)+1) == 7' => 1,
@@ -156,101 +150,62 @@ for my $actual_value (@actual_values) {
 # with a new, trivial grammar
 $grammar = $recce = $bocage = $order = $tree = undef;
 $grammar = Marpa::R2::Thin::G->new( { if => 1 } );
-
-# Marpa::R2::Display
-# name: Thin throw_set() example
-
-$grammar->throw_set(0);
-
-# Marpa::R2::Display::End
-
-# Turn it right back on, for safety's sake
-$grammar->throw_set(0);
-
-# Marpa::R2::Display
-# name: Thin grammar error methods
+$grammar->force_valued();
 
 my ( $error_code, $error_description ) = $grammar->error();
 my @error_names = Marpa::R2::Thin::error_names();
-my $error_name = $error_names[$error_code];
-
-# Marpa::R2::Display::End
+my $error_name  = $error_names[$error_code];
 
 Test::More::is( $error_code, 0, 'Grammar error code' );
 Test::More::is( $error_name, 'MARPA_ERR_NONE', 'Grammar error name' );
 Test::More::is( $error_description, 'No error', 'Grammar error description' );
 
 $symbol_S = $grammar->symbol_new();
-my $symbol_a = $grammar->symbol_new();
+my $symbol_a   = $grammar->symbol_new();
 my $symbol_sep = $grammar->symbol_new();
 $grammar->start_symbol_set($symbol_S);
 
-# Marpa::R2::Display
-# name: Thin sequence_new() example
-
 my $sequence_rule_id = $grammar->sequence_new(
-        $symbol_S,
-        $symbol_a,
-        {   separator => $symbol_sep,
-            proper    => 0,
-            min       => 1
-        }
-    );
-
-# Marpa::R2::Display::End
+    $symbol_S,
+    $symbol_a,
+    {   separator => $symbol_sep,
+        proper    => 0,
+        min       => 1
+    }
+);
 
 $grammar->precompute();
 my @events;
 my $event_ix = $grammar->event_count();
 while ( $event_ix-- ) {
 
-# Marpa::R2::Display
-# name: Thin event() example
-
     my ( $event_type, $value ) = $grammar->event( $event_ix++ );
 
-# Marpa::R2::Display::End
-
 }
 
 $recce = Marpa::R2::Thin::R->new($grammar);
 
-# Marpa::R2::Display
-# name: Thin ruby_slippers_set() example
-
 $recce->ruby_slippers_set(1);
 
-# Marpa::R2::Display::End
-
 $recce->start_input();
 $recce->alternative( $symbol_a, 1, 1 );
 $recce->earleme_complete();
 
-# Marpa::R2::Display
-# name: Thin terminals_expected() example
-
-   my @terminals = $recce->terminals_expected();
+my @terminals = $recce->terminals_expected();
 
-# Marpa::R2::Display::End
-
-Test::More::is( (scalar @terminals), 1, 'count of terminals expected' );
+Test::More::is( ( scalar @terminals ), 1, 'count of terminals expected' );
 Test::More::is( $terminals[0], $symbol_sep, 'expected terminal' );
 
 my $report;
 
-# Marpa::R2::Display
-# name: Thin progress_item() example
-
-    my $ordinal = $recce->latest_earley_set();
-    $recce->progress_report_start($ordinal);
-    ITEM: while (1) {
-        my ($rule_id, $dot_position, $origin) = $recce->progress_item();
-        last ITEM if not defined $rule_id;
-        push @{$report}, [$rule_id, $dot_position, $origin];
-    }
-    $recce->progress_report_finish();
-
-# Marpa::R2::Display::End
+my $ordinal = $recce->latest_earley_set();
+$recce->progress_report_start($ordinal);
+ITEM: while (1) {
+    my ( $rule_id, $dot_position, $origin ) = $recce->progress_item();
+    last ITEM if not defined $rule_id;
+    push @{$report}, [ $rule_id, $dot_position, $origin ];
+}
+$recce->progress_report_finish();
 
 Test::More::is( ( join q{ }, map { @{$_} } @{$report} ),
     '0 -1 0 0 0 0', 'progress report' );
@@ -264,20 +219,16 @@ $recce->earleme_complete();
 $recce->alternative( $symbol_a, 1, 1 );
 $recce->earleme_complete();
 $latest_earley_set_ID = $recce->latest_earley_set();
-$bocage        = Marpa::R2::Thin::B->new( $recce, $latest_earley_set_ID );
-$order         = Marpa::R2::Thin::O->new($bocage);
-$tree          = Marpa::R2::Thin::T->new($order);
+$bocage = Marpa::R2::Thin::B->new( $recce, $latest_earley_set_ID );
+$order  = Marpa::R2::Thin::O->new($bocage);
+$tree   = Marpa::R2::Thin::T->new($order);
 $tree->next();
-my $valuator = Marpa::R2::Thin::V->new($tree);
-$valuator->rule_is_valued_set( $sequence_rule_id, 1 );
+my $valuator         = Marpa::R2::Thin::V->new($tree);
 my $locations_report = q{};
 STEP: for ( ;; ) {
     my ( $type, @step_data ) = $valuator->step();
     last STEP if not defined $type;
 
-# Marpa::R2::Display
-# name: Thin location() example
-
     $type = $valuator->step_type();
     my ( $start, $end ) = $valuator->location();
     if ( $type eq 'MARPA_STEP_RULE' ) {
@@ -294,8 +245,6 @@ STEP: for ( ;; ) {
             .= "Nulling symbol $symbol_id is from $start to $end\n";
     }
 
-# Marpa::R2::Display::End
-
 } ## end STEP: for ( ;; )
 
 Test::More::is( $locations_report, <<'EXPECTED', 'Step locations' );
@@ -307,9 +256,33 @@ Token 1 is from 4 to 5
 Rule 0 is from 0 to 5
 EXPECTED
 
-# Local Variables:
-#   mode: cperl
-#   cperl-indent-level: 4
-#   fill-column: 100
-# End:
+{
+    my $symbol_count     = 0;
+    my @unvalued_symbols = ();
+    for (
+        my $symbol_id = 0;
+        $symbol_id <= $grammar->highest_symbol_id();
+        $symbol_id++
+        )
+    {
+        $grammar->throw_set(0);
+        my $result = $grammar->symbol_is_start($symbol_id);
+        $grammar->throw_set(1);
+        next SYMBOL if $result == -1;    # well-formed but non-existent
+        if ($result < 0) {
+            my ( $error_code, $error_description ) = $grammar->error();
+            die "symbol_is_start($symbol_id) failed ($error_code) $error_description";
+        }
+        $symbol_count++;
+        push @unvalued_symbols, $symbol_id
+            if !$grammar->symbol_is_valued($symbol_id);
+    } ## end for ( my $symbol_id = 0; $symbol_id <= $grammar->...)
+    my $unvalued_desc =
+          ( scalar @unvalued_symbols )
+        ? ( join q{ }, @unvalued_symbols )
+        : 'none';
+    Test::More::ok( ( $unvalued_desc eq 'none' ),
+        "Unvalued symbols: $unvalued_desc of $symbol_count" );
+}
+
 # vim: expandtab shiftwidth=4:
diff --git a/cpan/t/thin_eq.t b/cpan/t/thin_eq.t
index b41038c..65ee4bc 100644
--- a/cpan/t/thin_eq.t
+++ b/cpan/t/thin_eq.t
@@ -33,6 +33,7 @@ use Marpa::R2;
 # name: Thin example
 
 my $grammar = Marpa::R2::Thin::G->new( { if => 1 } );
+$grammar->force_valued();
 my $symbol_S = $grammar->symbol_new();
 my $symbol_E = $grammar->symbol_new();
 $grammar->start_symbol_set($symbol_S);
@@ -79,9 +80,6 @@ my $tree          = Marpa::R2::Thin::T->new($order);
 my @actual_values = ();
 while ( $tree->next() ) {
     my $valuator = Marpa::R2::Thin::V->new($tree);
-    $valuator->rule_is_valued_set( $op_rule_id,     1 );
-    $valuator->rule_is_valued_set( $start_rule_id,  1 );
-    $valuator->rule_is_valued_set( $number_rule_id, 1 );
     my @stack = ();
     STEP: while ( 1 ) {
         my ( $type, @step_data ) = $valuator->step();
@@ -156,6 +154,7 @@ for my $actual_value (@actual_values) {
 # with a new, trivial grammar
 $grammar = $recce = $bocage = $order = $tree = undef;
 $grammar = Marpa::R2::Thin::G->new( { if => 1 } );
+$grammar->force_valued();
 
 # Marpa::R2::Display
 # name: Thin throw_set() example
@@ -165,7 +164,7 @@ $grammar->throw_set(0);
 # Marpa::R2::Display::End
 
 # Turn it right back on, for safety's sake
-$grammar->throw_set(0);
+$grammar->throw_set(1);
 
 # Marpa::R2::Display
 # name: Thin grammar error methods
@@ -269,7 +268,6 @@ $order         = Marpa::R2::Thin::O->new($bocage);
 $tree          = Marpa::R2::Thin::T->new($order);
 $tree->next();
 my $valuator = Marpa::R2::Thin::V->new($tree);
-$valuator->rule_is_valued_set( $sequence_rule_id, 1 );
 my $locations_report = q{};
 STEP: for ( ;; ) {
     my ( $type, @step_data ) = $valuator->step();

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-perl/packages/libmarpa-r2-perl.git



More information about the Pkg-perl-cvs-commits mailing list