Text this: The theory and practice of compiler writing