in reply to How do I debug Parse::RecDescent?

Have a look at Parse::RecDescent::FAQ, there's a section on debugging.

Hope this helps, -gjb-

Update: Putting the non-terminal rules first, starting with the starting rule seems to solve the problem. And incidently, for your examples to parse, you'll want to chance:

startrule : instruction(s /;/)
to
startrule : instruction(s? /;/)
since all your test examples consist of just a single instruction.