The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
#!perl -T

use 5.006;
use strict;
use warnings;
use warnings FATAL => 'all';

use Data::Dumper;


use Test::More;

plan tests => 2;


use lib 'lib';

use Parse::Gnaw;
use Parse::Gnaw::LinkedList;

rule('subrule', 'b', 'c');

rule('firstrule', 'a', call('subrule'), 'd');


print Dumper $rulebook;


my   $match_string=Parse::Gnaw::LinkedList->new('abcdefg');
my $nomatch_string=Parse::Gnaw::LinkedList->new('abcefg');


      ok($match_string->parse($firstrule),  "multirule match");
ok(not($nomatch_string->parse($firstrule)), "multirule does not match");

__DATA__

$VAR1 = {
          'firstrule_rulefragment_1' => [
                                          [
                                            'rule',
                                            'firstrule_rulefragment_1',
                                            {
                                              'methodname' => 'rule',
                                              'filename' => 't/parse_intermediate_multirule.t',
                                              'payload' => 'firstrule_rulefragment_1',
                                              'linenum' => 23,
                                              'quantifier' => '',
                                              'package' => 'main'
                                            }
                                          ],
                                          [
                                            'lit',
                                            'd',
                                            {
                                              'methodname' => 'lit',
                                              'filename' => 't/parse_intermediate_multirule.t',
                                              'payload' => 'd',
                                              'linenum' => 23,
                                              'package' => 'main'
                                            }
                                          ]
                                        ],
          'subrule' => [
                         [
                           'rule',
                           'subrule',
                           {
                             'methodname' => 'rule',
                             'filename' => 't/parse_intermediate_multirule.t',
                             'linenum' => 21,
                             'payload' => 'subrule',
                             'quantifier' => '',
                             'package' => 'main'
                           }
                         ],
                         [
                           'lit',
                           'b',
                           {
                             'methodname' => 'lit',
                             'filename' => 't/parse_intermediate_multirule.t',
                             'linenum' => 21,
                             'payload' => 'b',
                             'package' => 'main'
                           }
                         ],
                         [
                           'lit',
                           'c',
                           {
                             'methodname' => 'lit',
                             'filename' => 't/parse_intermediate_multirule.t',
                             'linenum' => 21,
                             'payload' => 'c',
                             'package' => 'main'
                           }
                         ]
                       ],
          'firstrule' => [
                           [
                             'rule',
                             'firstrule',
                             {
                               'methodname' => 'rule',
                               'filename' => 't/parse_intermediate_multirule.t',
                               'linenum' => 23,
                               'payload' => 'firstrule',
                               'quantifier' => '',
                               'package' => 'main'
                             }
                           ],
                           [
                             'lit',
                             'a',
                             {
                               'methodname' => 'lit',
                               'filename' => 't/parse_intermediate_multirule.t',
                               'linenum' => 23,
                               'payload' => 'a',
                               'package' => 'main'
                             }
                           ],
                           [
                             'call',
                             'subrule',
                             {
                               'methodname' => 'call',
                               'filename' => 't/parse_intermediate_multirule.t',
                               'payload' => 'subrule',
                               'linenum' => 23,
                               'then_call' => 'firstrule_rulefragment_1',
                               'package' => 'main'
                             }
                           ]
                         ]
        };