-
Notifications
You must be signed in to change notification settings - Fork 17
/
item.pl
executable file
·39 lines (28 loc) · 896 Bytes
/
item.pl
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
#!/usr/bin/perl
use warnings;
use strict;
use Parse::RecDescent;
my $grammar = q {
seq : one_char three_chars two_chars
{ main::print_item(\@item, \%item); }
one_char : character
{ main::print_item(\@item, \%item); }
three_chars : character character character
{ main::print_item(\@item, \%item); }
two_chars : character
{ main::print_item(\@item, \%item); }
character : /\w/
{ main::print_item(\@item, \%item);}
};
my $parser=Parse::RecDescent->new($grammar) or die;
$parser->seq("A B C D E F");
sub print_item {
no warnings 'once';
my @item = @{ $_[0] };
my %item = %{ $_[1] };
print join " -- ", @item;
print "\n";
print map {$_ . "=" . $item{$_} . "; "} keys %item;
print "\n\n";
$Parse::RecDescent::return = join "", @item[1..$#item]; # $Parse::RecDescent::return
}