Note that scil is used in many of the lectures on compiler construction. It has its own menu entry and is therefore not mentioned below.
Note that material for the innovation part is placed under its own menu entry.
-
Michael Sipser, Introduction to the Theory of Computation,
3rd eds., Cengage Learning, 2013. ISBN 978-1133187790.
At IMADA, we have used the International Edition for some years. The publisher discontinued this edition a little while ago, so we have switched to the standard edition. This year, when there are any discrepancies between the two version, we will give references to both. In those cases, the primary reference will be to the standard edition and the other reference will be marked "Intl". This is primarily for the sake of students who have purchased a used copy from an older student.
- Andrew W. Appel, Modern Compiler Implementation in C, Cambridge University Press, 1998. ISBN 0-521-60765-5. (Reprinted with corrections, 1999; reissued, 2004.)
Note that you will likely continue with this book the following semester in DM553.
In Appel, we cover Chapters 2 and 3, pages 16-33 and 39-74. For LR parsing, the focus is on LR(1) and LALR(1), and we will not discuss LR(0) and SLR.
My supplementary errata to the books by
Further material related to lectures will be listed here as soon as relevant.
Material for lectures on data formats and command-line tools
Material for lecture on compilers: introduction and scanners
- Lecture slides
- A first flex example and how to run it
- A counting and a weird example
Material for lecture on compilers: bottom-up parsing
Material for lectures and exercises on compilers: Bison and AST
Material for lectures on compilers: symbol collection and type checking
- Lecture slides
- Lecture notes (also used for invariant-based assembler programming and code generation)
Material for lectures on compilers: invariant-based structured assembler programming and code generation
- Lecture slides
- Lecture notes (same as for previous topic)
- first_assembler.s
- factorial.src
- scil_factorial.s
- hand-coded_factorial.s
Material for lecture on cleaning, scraping, and DFA minimization
- Lecture notes (same as for previous topics)
- Lecture slides: cleaning and scraping, DFA minimization
- soup.py
- dates.py
Supplementary material
Texts listed below may be a help, but are not part of the curriculum of the course.
- regular expressions 101 - test your regular expressions
- csv dialect overview
- Python csv package
- About the command prompt (from DM507 - in Danish, but mostly links)
- Brief introduction to Linux (from DM500)
- GNU Coreutils (the simpler command-line functionalites such as tail, sort, uniq, ...)
- GNU grep manual
- GNU sed manual
- GNU awk manual
- PLY (Python Lex-Yacc)
- parser generators, including LL(1), LR(1), LALR(1)
- Compiler Explorer - see the code generated by compilers to numerous platforms
- Beautiful Soup Documentation