Re: How to access a variable from the grammar code
[email protected] (Damian Conway) Wed, 11 Jan 2012 08:50:16 +1100
| Newsgroups | perl.recdescent |
|---|---|
| Message-ID | <CAATtAp65CT8gJGiPAL9KDUjWMs09MdrHhvLg23bmbyAQHG5OAw@mail.gmail.com> |
On 11 January 2012 03:54, Yuri Shtil <[email protected]> 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