How to parse and manipulate other languages

SmaCC is a generic framework that can be used both for parsing and for rewriting code.

PetitParser is another framework for developing top-down, composable parsers.