I think your statement rule needs a trailing semi-colon. If you have further problems you should trace the execution. Do this by adding these statements to the program before constructing the parser:
in reply to Re^2: PRD parser problem: How to deal with mutiple lines
in thread PRD parser problem: How to deal with mutiple lines
The first one is actually the tracer. Be warned that it will generate a lot of output. Reading it will help you understand what the parser is doing and will probably lead to the error.
$::RD_TRACE = 1;
$::RD_HINT = 1;