See https://lara.epfl.ch/w/cc

Computer Language Processing presents algorithms, tools, and theory for automatically processing computer languages. These include in particular programming languages, so the course covers the topic of construction of interpreters and compilers. At the same time, it studies more broadly the concept of processing formal languages, such as regular and context-free languages.