Use PEG parser

Based on the excellent rust-peg library