examples | ||
images | ||
slides | ||
evaluation_scheme.md | ||
README.md | ||
specification.md | ||
submission.md |
Compiler Construction
Date | Topic / Recommended Schedule / Deadlines |
---|---|
2021-03-05 | Introduction |
2021-03-12 | Explaining lexer & parser code |
2021-03-19 | Lexer complete |
2021-03-26 | |
2021-04-16 | Parser complete |
2021-04-23 | |
2021-04-30 | Semantic checks complete |
2021-05-07 | |
2021-05-14 | AST → TAC conversion complete |
2021-05-21 | |
2021-05-28 | TAC → ASM (no function calls) complete |
2021-06-04 | |
2021-06-11 | TAC → ASM (with function calls) complete |
2021-06-18 | CFG generation complete |
2021-06-25 | Build Test Submission deadline |
2021-07-16 | Final Submission deadline (no extensions) |
Structure
The ultimate goal of this course is to build a working compiler according to the given specification.
You are not allowed to use code from other people participating in this course or code that has been submitted previously by somebody else. A getting started code-base is provided, but you can also start from scratch.
Please note that minor modifications may be made to the specification until 2 weeks before the final deadline. Therefore, double check for modifications before submitting — Git provides you the diff anyway.
You may work together in teams of 1–3 people. Teams may span across proseminar groups.
The proseminar takes place online over at Twitch, attendance is not mandatory.
I recommend sending me snapshots of your code-base, I'll provide feedback on stream. Please follow the submission guidelines.
Programming Language
Any of the following programming languages can be used:
- modern C (used for the getting started code-base)
- modern C++
- Go
- Rust
- Haskell
Go easy on external dependencies and obscure language extensions — yes, I'm looking at you, Haskell. Code readability is paramount. Using overly complex or cryptic concepts may negatively impact the evaluation process — again, looking at you, Haskell and your voodoo magic lenses.
Grading
The final grade is computed solely from the final submission.
Be sure to adhere to the specification, deviating from it (without giving proper reason) will negatively impact your grade. See Final Submission Evaluation Scheme for more details.
Contacting Me
Just message me on Discord if you need anything. Alternatively, you can send me an email using the following link.