Languages form the terrain of computing. Programming languages, protocol specifications, query languages, file formats, pattern languages, memory layouts, formal languages, config files, mark-up languages, formatting languages and meta-languages shape the way we compute. So, what shapes languages? Grammars do. Grammars are the language of languages. Behind every language, there is a grammar that d