There is a mathematical description of programming compilers I read once (think it was a survey paper) that I found very clear but I've never been able to find since. Basically defined a compiler as a type of function. Any good suggestions?
“A parser for things
Is a function from strings
To lists of pairs
Of things and strings”