One of the main things that you are missing is the leftop directive. However, the grammar also need to be restructured.
To see how it could/should be done have a look at the demo_calc.pl example that comes the Parse::RecDescent distro. It demonstrates almost exactly what you are trying to do here.
--
John.
Comment on Re: Parse::RecDescent without parentheses