in reply to A Slough of ParseRecDescent Woes

Your grammar can look something more like this:
file: line(s) /\z/ line: "G017RATEBRKRL" comma rate comma start_date comma end_date comma + time newline { ... } line: "G017CP111 D" comma start_rate comma end_rate comma change comma + date comma time newline { ... } line: "G017RPAGO/N" comma rate comma whitespace comma whitespace com +ma date comma time newline { ... }
and define your subcomponents as you have. That should work nicer. The different alternatives will be tried one after the other, failing after matching the first word. To speed it up a bit, put a <commit> right after that first word.

-- Randal L. Schwartz, Perl hacker