Vadim Zaytsev aka @grammarware

Computer Science Summer in Russia

Modern Construction of Industrial Strength Compilers
at Computer Science Summer in Russia


Compiler construction is one of the oldest and the most mature fields of computer science. Despite existing since the 1950s, it has been continuously evolving, advancing and changing. Old classic study books are no longer enough to sufficiently prepare students and practitioners to face the research world nor the industrial reality. These lectures are a short course meant to strengthen the classic compiler construction / software evolution courses given at Bachelor and Master levels, by highlighting problems encountered in the field of compilation of fourth generation and domain-specific languages, legacy modernisation, software reverse engineering and re-engineering, and revisiting the standard points of interest from the modern standpoint. The lectures will be given based on previous personal experience in research at several leading European institutions, teaching MSc students and working in the industry at the biggest independent compiler company in the world.

There will be examples from modern toolkits and recent academic articles, as well as example stories taken from real industrial projects in language development, support and migration. Our company, designs develops and sells compilers and code analysers for many languages, ranging from legacy behemoths like COBOL or PL/I to customer-specific domain-focused little languages.


Lecture 1: Introduction to Modern Compiler Construction (Slides)

Topic 1.1: Self-introduction

Topic 1.2: The Chomsky hierarchy

Wikipedia's table of formal languages and grammars (CC-BY-SA):

Automata theory: formal languages and formal grammars
Chomsky hierarchy Grammars Languages Abstract machines
  • Type-0
  • Type-1
  • Type-2
  • Type-3

Topic 1.3: Grammarware

  1. Ralf Lämmel. Software Languages: Syntax, Semantics, and Metaprogramming, Springer, 2018.
  2. Vadim Zaytsev, editor. Software Languages Engineering Body of Knowledge, 2019.
  3. Paul Klint, Ralf Lämmel, Chris Verhoef. Toward an Engineering Discipline for Grammarware, ACM ToSEM, 2005.
  4. Martin Fowler. Language Workbench, 2008.
  5. Мартин Фаулер. Языковой инструментарий: новая жизнь языков предметной области, 2005.
  6. Vadim Zaytsev. Grammar Zoo, 2015.
  7. Vadim Zaytsev. Grammar Zoo: A Corpus of Experimental Grammarware, SCP 98, 2015. (PDF)

Topic 1.4: Parsing in a broad sense

  1. Vadim Zaytsev. Parsing in a Broad Sense, webpage, 2015.
  2. Vadim Zaytsev, Anya Helene Bagge, Parsing in a Broad Sense, MoDELS’14, LNCS 8767, 2014. (slides)
  3. Vadim Zaytsev, Case Studies in Bidirectionalisation, TFP, 2014. Extended abstract. (slides)
  4. Vadim Zaytsev, Anya Helene Bagge, Modelling Parsing and Unparsing, Parsing@SLE, 2014. (slides)
  5. Anya Helene Bagge, Ralf Lämmel, Vadim Zaytsev, Reflections on Courses for Software Language Engineering, EduSymp, 2014. (slides)
  6. Vadim Zaytsev, Understanding Metalanguage Integration by Renarrating a Technical Space Megamodel, GEMOC’14, 2014. (slides)
  7. Anya Helene Bagge, Vadim Zaytsev, Languages, Models and Megamodels: A Tutorial, SATToSE, 2014. (PDF) (Slides)

Lecture 2: Deep Dive into Compiler Construction (Slides)


Lecture 3: Burning Topics in Compiler Construction (Slides)

Topic 1.5: Design with intent

  1. Vadim Zaytsev. Language Design with Intent, MoDELS, 2017. (PDF)
  2. Vadim Zaytsev. DYOL: Design Your Own Language: A software language design toolkit, 2017. (cards)
  3. Dan Lockton. Design with Intent, 2015.

Other sources (subject to expansion)

  1. Vadim Zaytsev. Open Challenges in Incremental Coverage of Legacy Software Languages , PX/17.2, 2017. (PDF) (fourth generation languages and their problems)
  2. Vadim Zaytsev. Formal Foundations for Semi-parsing , CSMR-WCRE, 2014. (PDF) (semi-parsing algorithms: islands, lakes, etc)
  3. Vadim Zaytsev. Parser Generation by Example for Legacy Pattern Languages , GPCE, 2017. (PDF) (parsing exotic legacy languages)
  4. Vadim Zaytsev, Anya Helene Bagge. Parsing in a Broad Sense , MoDELS, 2014. (PDF) (parsing in a broad sense)
  5. Ralf Lämmel, Vadim Zaytsev. Recovering Grammar Relationships for the Java Language Specification , SQJ, 2014. (PDF) (grammar extraction)
  6. Vadim Zaytsev. Notation-Parametric Grammar Recovery , LDTA, 2012. (PDF) (grammar recovery)
  7. Mats Stijlaart, Vadim Zaytsev. Towards a Taxonomy of Grammar Smells , SLE, 2017. (PDF) (grammar smells)
  8. Ralf Lämmel, Vadim Zaytsev. An Introduction to Grammar Convergence , IFM, 2009. (PDF) (grammar convergence)
  9. Vadim Zaytsev. Cotransforming Grammars with Shared Packed Parse Forests , EC-EASST, 2016. (PDF) (bidirectional and coupled transformations)
  10. Vadim Zaytsev. On the Need of Compilepretation for Legacy Languages , MoreVMs, 2017. (between interpretation and compilation)
  11. Vadim Zaytsev. An Industrial Case Study in Compiler Testing , SLE, 2018. (PDF) (compiler testing)
  12. Vadim Zaytsev, Ralf Lämmel. A Unified Format for Language Documents , SLE, 2010. (PDF) (language documentation)
  13. Juriaan Kennedy van Dam, Vadim Zaytsev. Software Language Identification with Natural Language Classifiers , SANER, 2016. (PDF) (machine learning in compiler construction)
  14. Anya Helene Bagge, Vadim Zaytsev. Open and Original Problems in Software Language Engineering 2015 Workshop Report , SIGSOFT SE Notes, 2015. (PDF) (open problems of the future)


The page is maintained by Dr. Vadim Zaytsev a.k.a. @grammarware. Last updated: February 2025.
XHTML 1.1 CSS 3