The study of formal languages and of related families of automata has long been at the core of theoretical computer science. Until recently, the main reasons for this centrality were connected with the specification and analy- sis of programming languages, which led naturally to the following ques- tions. How might a grammar be written for such a language? How could we check whether a text were or were not a well-formed program generated by that grammar?...