http://www.perlmonks.org?node_id=1157470


in reply to Parsing a sentence with Regexp::Grammars

I haven't used it myself, but you seem to be missing a use Regexp::Grammars; line in your code.

Replies are listed 'Best First'.
Re^2: Parsing a sentence with Regexp::Grammars
by blindluke (Hermit) on Mar 11, 2016 at 18:09 UTC

    You, sir, are a gentleman and a scholar.

    This fine example of my stupidity will rank highly among its countless peers.

    Edit:

    Just in case someone gets here looking for a working example, here it is:

    use v5.14; use Regexp::Grammars; my $sentence = "Show me the money"; my $grammar = qr{ <nocontext:> <Sentence> <rule: Sentence> <VerbGroup> <NounGroup> <rule: VerbGroup> <Verb> <VPostfix>? <rule: Verb> <.Word> <rule: NounGroup> <NPrefix>? <Noun> <rule: Noun> <.Word> <rule: VPostfix> me | us | them <rule: NPrefix> a | an | the | some <rule: Word> \w+ }x; sub parse { my $s = shift; say "The sentence is: $s"; if ($s =~ $grammar) { use Data::Dumper; print Dumper \%/; } else { say "I did not understand you." } } parse ($sentence);

    The result looks like this:

    The sentence is: Show me the money $VAR1 = { 'Sentence' => { 'NounGroup' => { 'NPrefix' => 'the', 'Noun' => 'money' }, 'VerbGroup' => { 'Verb' => 'Show', 'VPostfix' => 'me' } } };

    - Luke