File: aliased_subpatterns.t

package info (click to toggle)
libregexp-grammars-perl 1.058-2
  • links: PTS, VCS
  • area: main
  • in suites: bookworm, forky, sid, trixie
  • size: 1,328 kB
  • sloc: perl: 53,328; makefile: 2
file content (43 lines) | stat: -rw-r--r-- 1,090 bytes parent folder | download
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
42
43
use 5.010;
use warnings;
use Test::More 'no_plan';

my $parser = do{
    use Regexp::Grammars;
    qr{
        <num=(\d++)>
      | <_pat='".*"'> <str=(??{ $MATCH{_pat} })>
      | <bool=(?{'true or false'})>
    }xms
};

my $WARNINGS;
my $lookbehind = do {
    use Regexp::Grammars;
    BEGIN {
        close *Regexp::Grammars::LOGFILE;
        open *Regexp::Grammars::LOGFILE, '>', \$WARNINGS;
    }
    qr{
          <foo=( (?<!bar) (?<=ar) foo )>
    }xms;
};

if ($] < 5.018 || $] >= 5.020) {
    ok !$WARNINGS => "No warnings found '$WARNINGS'";
}

ok +('"abc"' =~ $parser) => 'Matched <str>';
is $/{str}, '"abc"'      => 'Captured correctly';

ok +(42 =~ $parser) => 'Matched <num>';
is $/{num}, 42      => 'Captured correctly';

ok +('true' =~ $parser)      => 'Matched <bool>';
is $/{bool}, 'true or false' => 'Pseudo-captured correctly';

ok +('barfoo' !~ $lookbehind)      => 'Neg lookbehind worked';
ok +('foo'    !~ $lookbehind)      => 'Pos lookbehind worked';

ok +('carfoo' =~ $lookbehind)     => 'Both lookbehinds worked';
is $/{foo}, 'foo' => 'Pseudo-captured correctly';