unfudged P46. Switched from p5 regex to grammars