Formal Languages and Compiler Design