A PEG-based pattern matching parser generator