On 11 January 2012 03:54, Yuri Shtil <ysh...@nvidia.com> asked:

> Is there an elegant way to pass a parameter to the Parse::RecDescent
> constructor and access it from the actions?

I'm afraid there isn't.

The best workaround is probably to make the shared resource an attribute
of the parser object (instead of using an external variable) and then
access it within the grammar via $thisparser. Like so:

my $grammar = q{
     startrule: a b c {$thisparser->{sc_obj}->method}
...
};

sub action {
    my $parser = Parse::RecDescent->new($grammar);
    $parser->{sc_obj} = SomeClass->new();
    $parser->startrule($sometext);
}


Damian

Reply via email to