Language implementation Patterns : create your own domain-specific and general programming languages. - Parr, Terence (Pragmatic Bookshelf, 2010)