2019-03-06 15:55:44 +01:00
|
|
|
|
% Compiler Construction
|
|
|
|
|
% Alex Hirsch
|
2020-02-22 14:59:37 +01:00
|
|
|
|
% 3 March 2020
|
2019-03-06 15:55:44 +01:00
|
|
|
|
|
|
|
|
|
# This ProSeminar
|
|
|
|
|
|
|
|
|
|
## Curriculum
|
|
|
|
|
|
2020-02-22 14:59:37 +01:00
|
|
|
|
> […] development of a compiler for a simple procedural programming language
|
2019-03-06 15:55:44 +01:00
|
|
|
|
|
|
|
|
|
## Prerequisites
|
|
|
|
|
|
2020-02-22 14:59:37 +01:00
|
|
|
|
- This is a master's course!
|
2019-03-06 15:55:44 +01:00
|
|
|
|
- Brain
|
|
|
|
|
|
2020-02-22 14:59:37 +01:00
|
|
|
|
If you struggle too much, do this course at a later time.
|
|
|
|
|
You can unregister until the end of April.
|
|
|
|
|
|
2019-03-06 15:55:44 +01:00
|
|
|
|
- - -
|
|
|
|
|
|
2020-02-22 14:59:37 +01:00
|
|
|
|
- Fluent in C (or C++, or Go, or Rust, or Haskell)
|
|
|
|
|
- General programmer mindset
|
|
|
|
|
- Knowing your tools
|
2019-03-06 15:55:44 +01:00
|
|
|
|
|
|
|
|
|
- Algorithms and data structures
|
|
|
|
|
- Graphs + traversal
|
|
|
|
|
|
|
|
|
|
- Operating systems
|
|
|
|
|
- Utilising your software stack
|
|
|
|
|
|
2020-02-22 14:59:37 +01:00
|
|
|
|
- Assembly (preferably x86)
|
|
|
|
|
|
2019-03-06 15:55:44 +01:00
|
|
|
|
- - -
|
|
|
|
|
|
|
|
|
|
- Software development
|
|
|
|
|
- Version control system
|
|
|
|
|
- Build systems
|
2020-02-22 14:59:37 +01:00
|
|
|
|
- Testing
|
2019-03-06 15:55:44 +01:00
|
|
|
|
|
2020-02-22 14:59:37 +01:00
|
|
|
|
- Project management
|
|
|
|
|
- Organisation
|
|
|
|
|
- Team communication
|
2019-03-06 15:55:44 +01:00
|
|
|
|
|
|
|
|
|
- - -
|
|
|
|
|
|
|
|
|
|
- Formal languages and automata theory
|
2020-02-22 14:59:37 +01:00
|
|
|
|
- Grammars + transformations
|
|
|
|
|
- Lexer / parser
|
2019-03-06 15:55:44 +01:00
|
|
|
|
|
|
|
|
|
## Ultimate Goal
|
|
|
|
|
|
|
|
|
|
- Building a compiler
|
|
|
|
|
- Specification provided
|
|
|
|
|
- Evaluation scheme provided
|
|
|
|
|
|
|
|
|
|
## In the Lab
|
|
|
|
|
|
|
|
|
|
- QA sessions
|
|
|
|
|
- I'll be present for questions
|
|
|
|
|
- You can work on your compiler
|
|
|
|
|
|
|
|
|
|
## Requirements
|
|
|
|
|
|
|
|
|
|
- Working compiler
|
2020-02-22 14:59:37 +01:00
|
|
|
|
- More positive than negative QA sessions
|
|
|
|
|
|
|
|
|
|
## Recommended Schedule
|
|
|
|
|
|
|
|
|
|
- March: lexer / parser
|
|
|
|
|
- April: semantic checks, start IR generation
|
|
|
|
|
- May: finish IR generation, start ASM generation
|
|
|
|
|
- June: finish ASM generation, CFG generation, polish
|
2019-03-06 15:55:44 +01:00
|
|
|
|
|
2020-02-22 14:59:37 +01:00
|
|
|
|
## Submissions
|
2019-03-06 15:55:44 +01:00
|
|
|
|
|
2020-02-22 14:59:37 +01:00
|
|
|
|
- End of June: build test submission (optional)
|
|
|
|
|
- Mid of July: final submission (no extensions)
|
2019-03-06 15:55:44 +01:00
|
|
|
|
|
|
|
|
|
## Teams
|
|
|
|
|
|
2020-02-22 14:59:37 +01:00
|
|
|
|
- 1–3 people
|
2019-03-06 15:55:44 +01:00
|
|
|
|
- May span across PS groups
|
2020-02-22 14:59:37 +01:00
|
|
|
|
- Send me your team composition via mail within March
|
2019-03-06 15:55:44 +01:00
|
|
|
|
|
|
|
|
|
## Further Details
|
|
|
|
|
|
|
|
|
|
- See course material
|
|
|
|
|
|
|
|
|
|
<https://git.uibk.ac.at/c7031162/703602-Compiler-Construction>
|