in reply to Parse::RecDescent grammar definition

I get this when I try to run it:

ERROR: Internal error in generated parser code! (Hint: Set $::RD_HINT (or -RD_HINT if you're using "pe +rl -s") for hints on fixing these problems.) Can't call method "Format" on an undefined value at ./temp.pl line 17.

When run with "$::RD_HINT" set, as it recommends, I get this:

ERROR: Internal error in generated parser code! (Hint: Global symbol "%ite" requires explicit package +name at (eval 8) line 472. syntax error at (eval 8) line 475, near ") {" syntax error at (eval 8) line 480, near "} Parse::RecDescent::_trace" BEGIN not safe after errors- -compilation aborted at (eval 8) line 541. ) Can't call method "Format" on an undefined value at ./temp.pl line 20.

I'm using Perl version 5.12.

Update: Ok, the problem was that I copy-pasted the code, and one of the lines was broken from that. I've used the "download" link, and now it runs fine. (though with citromatik's original problem) (thanks, jethro!)

Replies are listed 'Best First'.
Re^2: Parse::RecDescent grammar definition
by citromatik (Curate) on Mar 21, 2011 at 12:56 UTC

    I don't have any problem running the example I posted in Perl 5.10:

    #!/usr/bin/perl use strict; use warnings; use Parse::RecDescent; my $p2 = Parse::RecDescent->new(q( hyphen : "-" option : "a" | "b" | "c" Format : Entry(s) Pre : hyphen option Post : option hyphen Entry : Pre | Post { use Data::Dumper; print Dumper \%ite +m;} )); $p2->Format('a-'); $p2->Format('-a');

    output:

    $VAR1 = { 'Post' => '-', '__RULE__' => 'Entry' };

    citromatik