2020-02-27 15:48:20 +01:00
|
|
|
|
# Compiler Construction
|
2020-02-05 13:35:04 +01:00
|
|
|
|
|
|
|
|
|
| Date | Topic / Recommended Schedule / Deadlines |
|
|
|
|
|
| ---------- | ----------------------------------------- |
|
2021-02-04 13:21:11 +01:00
|
|
|
|
| 2021-03-05 | *Introduction* |
|
|
|
|
|
| 2021-03-12 | *Explaining lexer & parser code* |
|
|
|
|
|
| 2021-03-19 | Lexer complete |
|
2021-02-23 14:59:54 +01:00
|
|
|
|
| 2021-03-26 | Team composition |
|
2021-02-04 13:21:11 +01:00
|
|
|
|
| 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-02-23 14:59:54 +01:00
|
|
|
|
| 2021-06-25 | |
|
2021-02-04 13:21:11 +01:00
|
|
|
|
| 2021-07-16 | Final Submission deadline (no extensions) |
|
2018-12-31 15:26:22 +01:00
|
|
|
|
|
|
|
|
|
- [mC Compiler Specification](specification.md)
|
|
|
|
|
- [Getting Started Code-base](https://git.uibk.ac.at/c7031162/mcc)
|
|
|
|
|
|
|
|
|
|
## 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.
|
2020-02-05 13:35:04 +01:00
|
|
|
|
A *getting started* code-base is provided, but you can also start from scratch.
|
2018-12-31 15:26:22 +01:00
|
|
|
|
|
2020-02-05 13:35:04 +01:00
|
|
|
|
Please note that minor modifications may be made to the specification until 2 weeks before the final deadline.
|
2018-12-31 15:26:22 +01:00
|
|
|
|
Therefore, double check for modifications before submitting — Git provides you the diff anyway.
|
|
|
|
|
|
2019-03-01 20:49:04 +01:00
|
|
|
|
You may work together in teams of 1–3 people.
|
2021-02-04 13:21:11 +01:00
|
|
|
|
Teams may span across proseminar groups.
|
|
|
|
|
|
|
|
|
|
The proseminar takes place online [over at Twitch](https://www.twitch.tv/AlexWarhawk), attendance is not mandatory.
|
|
|
|
|
|
2021-02-23 14:59:54 +01:00
|
|
|
|
### Repository
|
|
|
|
|
|
|
|
|
|
Host your code on the University GitLab and add me as developer to your repository.
|
|
|
|
|
|
|
|
|
|
Furthermore, it is required to set up GitLab CI to automatically build and test your code.
|
|
|
|
|
The getting started code-base comes with a basic [`.gitlab-ci.yml`](https://git.uibk.ac.at/c7031162/mcc/blob/master/.gitlab-ci.yml).
|
2018-12-31 15:26:22 +01:00
|
|
|
|
|
2020-02-05 13:35:04 +01:00
|
|
|
|
### Programming Language
|
2018-12-31 15:26:22 +01:00
|
|
|
|
|
2020-02-05 13:35:04 +01:00
|
|
|
|
Any of the following programming languages can be used:
|
2018-12-31 15:26:22 +01:00
|
|
|
|
|
2020-02-05 13:35:04 +01:00
|
|
|
|
- modern C (used for the getting started code-base)
|
|
|
|
|
- modern C++
|
|
|
|
|
- Go
|
|
|
|
|
- Rust
|
|
|
|
|
- Haskell
|
2018-12-31 15:26:22 +01:00
|
|
|
|
|
2020-02-05 13:35:04 +01:00
|
|
|
|
Go easy on external dependencies and obscure language extensions — yes, I'm looking at you, Haskell.
|
|
|
|
|
Code readability is paramount.
|
2021-02-04 13:21:11 +01:00
|
|
|
|
Using overly complex or cryptic concepts may negatively impact the evaluation process — again, looking at you, Haskell and your voodoo magic lenses.
|
2018-12-31 15:26:22 +01:00
|
|
|
|
|
2021-02-23 14:59:54 +01:00
|
|
|
|
## Submission
|
|
|
|
|
|
|
|
|
|
### Team Composition
|
|
|
|
|
|
|
|
|
|
Send me a mail (one per team) with the names of your team members and a link to your repository.
|
|
|
|
|
Don't forget to add me as developer to your repository.
|
|
|
|
|
|
|
|
|
|
### Feedback Request
|
|
|
|
|
|
|
|
|
|
Just message me whenever you want to receive feedback on your code.
|
|
|
|
|
Tell me which commit to look at.
|
|
|
|
|
|
|
|
|
|
Ensure that the repository does not contain any personal information like names or student IDs as I'll be going over it on stream.
|
|
|
|
|
|
|
|
|
|
### Final Submission
|
|
|
|
|
|
|
|
|
|
Add the tag `final` to the revision you want me to look at for the final evaluation.
|
2021-02-23 15:41:36 +01:00
|
|
|
|
Note that tags need to be pushed explicitly.
|
2021-02-23 14:59:54 +01:00
|
|
|
|
|
|
|
|
|
I'll only evaluate your solution if the corresponding CI job builds and tests your code successfully.
|
|
|
|
|
|
2020-02-05 13:35:04 +01:00
|
|
|
|
## Grading
|
|
|
|
|
|
2021-02-04 13:21:11 +01:00
|
|
|
|
The final grade is computed solely from the final submission.
|
2020-02-05 13:35:04 +01:00
|
|
|
|
|
|
|
|
|
Be sure to adhere to the specification, deviating from it (without giving proper reason) will negatively impact your grade.
|
|
|
|
|
See [Final Submission Evaluation Scheme](evaluation_scheme.md) for more details.
|
|
|
|
|
|
2018-12-31 15:26:22 +01:00
|
|
|
|
## Contacting Me
|
|
|
|
|
|
2021-02-04 13:21:11 +01:00
|
|
|
|
Just message me on Discord if you need anything.
|
|
|
|
|
Alternatively, you can send me an email using the following link.
|
2018-12-31 15:26:22 +01:00
|
|
|
|
|
2020-03-28 18:49:01 +01:00
|
|
|
|
📧 [send email](mailto:alexander.hirsch@uibk.ac.at?subject=703602%20-%20)
|
2021-02-23 14:59:54 +01:00
|
|
|
|
|
|
|
|
|
You can also open issue on GitLab, please message me if I do not respond within 24 hours; I might not have received a notification.
|