Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

General question to RecDescent pattern matching

0 views
Skip to first unread message

Ravi Coote

unread,
Oct 9, 2009, 6:21:28 AM10/9/09
to recde...@perl.org
Hi all,

I've got a question to the following perl script

------------------
#!/usr/bin/perl

use Parse::RecDescent;

# Create and compile the source file
$parser = Parse::RecDescent->new(q(
startrule : myterm
myterm : /h\d+/ | /h\d+/ "(" myterm ")"
));

# Test it on sample data
print "Valid 1\n" if $parser->startrule("h1");
print "Valid 2\n" if $parser->startrule("h1(h2,h34)");
------------------

Running it gives:
Valid 1
Valid 2

------------------

I don't understand, why String2 h1(h2,h34) is beeing parsed correctly. I
didn't specify a rule like
myterm : /h\d+/ | /h\d+/ "(" myterm ")" | /h\d+/ "(" myterm "," myterm
")" .

Actually it is possibly to put in every string after h1(h2,h34) like
h1(h2,h34)aaaaaaaaaaaa, which is parsed correctly. It gives Valid 2,
too. That shouldnt be, does it ?

Thank you for any hints! Probably i missed something !?

Regards,

Ravi Coote

Dominique Dumont

unread,
Oct 13, 2009, 5:51:54 AM10/13/09
to recde...@perl.org
ravi....@fkie.fraunhofer.de ("Coote, Ravi") writes:

> I don't understand, why String2 h1(h2,h34) is beeing parsed correctly. I
> didn't specify a rule like
> myterm : /h\d+/ | /h\d+/ "(" myterm ")" | /h\d+/ "(" myterm "," myterm
> ")" .
>
> Actually it is possibly to put in every string after h1(h2,h34) like
> h1(h2,h34)aaaaaaaaaaaa, which is parsed correctly. It gives Valid 2,
> too. That shouldnt be, does it ?
>
> Thank you for any hints! Probably i missed something !?

In fact, both your cases match /h\d+/. In the second case, (h2,h34) is
not parsed.

For more information, see

http://search.cpan.org/~tbone/Parse-RecDescent-FAQ-6.0.i/FAQ.pm#Insuring_a_top-level_rule_match

All the best

--
Dominique Dumont
"Delivering successful solutions requires giving people what they
need, not what they want." Kurt Bittner

0 new messages