ディレクティブ score

#!/usr/bin/env perl

use strict;
use Parse::RecDescent;

my $grammar =
q{
    inputs : 'a'  { print "*a1*\n"; }
           | 'a'  { print "*a2*\n"; }
           | 'a'  { print "*a3*\n"; }
};

my $parse = new Parse::RecDescent ($grammar);

while (<>)
{
    defined $parse->inputs($_) or print "Bad text!\n";
}

で、

a
*a1*


ディレクティブつき

#!/usr/bin/env perl

use strict;
use Parse::RecDescent;

my $grammar =
q{
    inputs : 'a'  { print "*a1*\n"; } <score: 1>
           | 'a'  { print "*a2*\n"; } <score: 2>
           | 'a'  { print "*a3*\n"; } <score: 3>
};

my $parse = new Parse::RecDescent ($grammar);

while (<>)
{
    defined $parse->inputs($_) or print "Bad text!\n";
}

で、

a
*a1*
*a2*
*a3*

三つ出てくるとは意外だった