First cut at PEG parser