add some preprocessing to fix pipes

This gets around the order of Parse::RecDescent's interpretation, but
it's not a good plan. The tree parse is a much better plan.