File: autotree.t

package info (click to toggle)
libparse-recdescent-perl 1.967015%2Bdfsg-2
  • links: PTS, VCS
  • area: main
  • in suites: bullseye, buster
  • size: 768 kB
  • sloc: perl: 6,797; makefile: 15; ansic: 9
file content (41 lines) | stat: -rw-r--r-- 849 bytes parent folder | download | duplicates (4)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
use Parse::RecDescent;
use Test::More tests=>9;

foreach my $base ('',
                  ':BaseModule',
                  ':BaseModule::',
              ) {
    my $grammar = "<autotree$base>" . q {
file    : command(s)
command : get | set | vet
get : 'get' ident ';'
set : 'set' ident 'to' value ';'
vet : 'check' ident 'is' value ';'
ident   : /\w+/
value   : /\d+/
};


    my $parser = new Parse::RecDescent($grammar) or die "Bad Grammar";
    pass('created autotree grammar');

    my $text = q{
set a to 3;
get b;
check a is 3;
set c to 4;
check b is 0;
};

    my $tree = $parser->file($text);
    ok $tree, 'parsed input text';
    use Data::Dumper;

    my $package = $base;
    $package =~ s/^:*//;
    $package =~ s/:*$//;
    $package .= '::' if length $package;
    ok("${package}file" eq ref $tree, qq{got "$base" as "$package"});
}