the type safe PEG parser