Pattern-matching, parsing and generic traversals through the medium of PEGs