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
-
Personal
-
Vadim Zaytsev.
Curriculum Vitae,
June 2019.
-
Second generation languages (2GLs)
-
Third generation languages (3GLs)
-
Fourth generation languages (4GLs)
-
Vadim Zaytsev.
Ecosystem Health as a Reason for Migration: The Mainframe Case,
SoHeal 2019.
(PDF)
(YouTube)
-
Vadim Zaytsev, Johan Fabry.
Fourth Generation Languages are Technical Debt,
TechDebt 2019.
(PDF)
-
Vadim Zaytsev.
Open Challenges in Incremental Coverage of Legacy Software Languages,
PX/17.2, 2017.
(PDF)
-
AppBuilder
-
Raincode.
TIALAA: There is a Life After AppBuilder,
2019.
(YouTube)
-
Vadim Zaytsev.
An Industrial Case Study in Compiler Testing,
SLE 2018.
(PDF)
-
Vadim Zaytsev.
Parser Generation by Example for Legacy Pattern Languages,
GPCE 2017.
(PDF)
-
IDEAL
-
Raincode Labs.
DataKom: The Migration Solution,
2019.
-
PACBASE
-
Raincode Labs.
PACBASE Migration: More than 200 million lines of code migrated,
2019.
-
XXXXXXXX (a 4GL for a MultiValue database system)
-
Leszek Włodarski, Boris Pereira, Ivan Povazan, Johan Fabry, Vadim Zaytsev.
Quality First! A Large Scale Modernisation Report,
SANER 2019.
Topic 1.2: The Chomsky hierarchy
Wikipedia's table of formal languages and grammars (CC-BY-SA):
Topic 1.3: Grammarware
-
Ralf Lämmel.
Software Languages: Syntax, Semantics, and Metaprogramming,
Springer, 2018.
-
Vadim Zaytsev, editor.
Software Languages Engineering Body of Knowledge,
2019.
-
Paul Klint, Ralf Lämmel, Chris Verhoef.
Toward an Engineering Discipline for Grammarware,
ACM ToSEM, 2005.
-
Martin Fowler.
Language Workbench,
2008.
-
Мартин Фаулер.
Языковой инструментарий: новая жизнь языков предметной области,
2005.
-
Vadim Zaytsev.
Grammar Zoo,
2015.
-
Vadim Zaytsev.
Grammar Zoo: A Corpus of Experimental Grammarware,
SCP 98, 2015.
(PDF)
Topic 1.4: Parsing in a broad sense
-
Vadim Zaytsev.
Parsing in a Broad Sense,
webpage, 2015.
-
Vadim Zaytsev, Anya Helene Bagge, Parsing in a Broad Sense, MoDELS’14, LNCS 8767, 2014.
(slides)
-
Vadim Zaytsev, Case Studies in Bidirectionalisation, TFP, 2014. Extended abstract.
(slides)
-
Vadim Zaytsev, Anya Helene Bagge, Modelling Parsing and Unparsing, Parsing@SLE, 2014.
(slides)
-
Anya Helene Bagge, Ralf Lämmel, Vadim Zaytsev, Reflections on Courses for Software Language Engineering, EduSymp, 2014.
(slides)
-
Vadim Zaytsev, Understanding Metalanguage Integration by Renarrating a Technical Space Megamodel, GEMOC’14, 2014.
(slides)
-
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
-
Vadim Zaytsev.
Language Design with Intent,
MoDELS, 2017.
(PDF)
-
Vadim Zaytsev.
DYOL: Design Your Own Language: A software language design toolkit,
2017.
(cards)
-
Dan Lockton.
Design with Intent,
2015.
Other sources (subject to expansion)
-
Vadim Zaytsev.
Open Challenges in Incremental Coverage of Legacy Software Languages
,
PX/17.2, 2017.
(PDF)
(fourth generation languages and their problems)
-
Vadim Zaytsev.
Formal Foundations for Semi-parsing
,
CSMR-WCRE, 2014.
(PDF)
(semi-parsing algorithms: islands, lakes, etc)
-
Vadim Zaytsev.
Parser Generation by Example for Legacy Pattern Languages
,
GPCE, 2017.
(PDF)
(parsing exotic legacy languages)
-
Vadim Zaytsev, Anya Helene Bagge.
Parsing in a Broad Sense
,
MoDELS, 2014.
(PDF)
(parsing in a broad sense)
-
Ralf Lämmel, Vadim Zaytsev.
Recovering Grammar Relationships for the Java Language Specification
,
SQJ, 2014.
(PDF)
(grammar extraction)
-
Vadim Zaytsev.
Notation-Parametric Grammar Recovery
,
LDTA, 2012.
(PDF)
(grammar recovery)
-
Mats Stijlaart, Vadim Zaytsev.
Towards a Taxonomy of Grammar Smells
,
SLE, 2017.
(PDF)
(grammar smells)
-
Ralf Lämmel, Vadim Zaytsev.
An Introduction to Grammar Convergence
,
IFM, 2009.
(PDF)
(grammar convergence)
-
Vadim Zaytsev.
Cotransforming Grammars with Shared Packed Parse Forests
,
EC-EASST, 2016.
(PDF)
(bidirectional and coupled transformations)
-
Vadim Zaytsev.
On the Need of Compilepretation for Legacy Languages
,
MoreVMs, 2017.
(between interpretation and compilation)
-
Vadim Zaytsev.
An Industrial Case Study in Compiler Testing
,
SLE, 2018.
(PDF)
(compiler testing)
-
Vadim Zaytsev, Ralf Lämmel.
A Unified Format for Language Documents
,
SLE, 2010.
(PDF)
(language documentation)
-
Juriaan Kennedy van Dam, Vadim Zaytsev.
Software Language Identification with Natural Language Classifiers
,
SANER, 2016.
(PDF)
(machine learning in compiler construction)
-
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)