in reply to A Slough of ParseRecDescent Woes

I'm pretty sure (without sitting down and trying it myself) - you need to add a startrule as that is where the parser will try to look for something. (That is, the grammar starts with startrule, does whatever it can from that, and then returns to startrule until EOF. If it can't do something within the definition of the grammer, it reports an incorrect parse). Fortunately, this is easy: your lines are going to be one of the formats of the stock, so add this to your grammar:
startrule : G017RATEBRKRL | G017CP111_D | G017RPAGO_N | G017ONFD | G01 +7PDFF
Also note that you probably need to have the unique identifier in front of each line in that line's grammer; that is, for the first type, you'll need:
G017RATEBRKRL_Key : "G017RATEBRKRL" G017RATEBRKRL : G017RATEBRKRL_Key type comma rate comma start_date com +ma end_date comma time { return \%item }

As for the commas, I don't think there's a way to get rid of them easily. Punctionuation typically has to be specified in lex grammars, and that's what you're doing here.

-----------------------------------------------------
Dr. Michael K. Neylon - mneylon-pm@masemware.com || "You've left the lens cap of your mind on again, Pinky" - The Brain
It's not what you know, but knowing how to find it if you don't know that's important