A type-safe PEG parser combinator in Java