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