An attempt at a new parser, vaguely based on PEG