uibk_703602-Compiler-Constr.../evaluation_scheme.md

57 lines
1.9 KiB
Markdown
Raw Normal View History

2019-03-01 20:55:14 +01:00
# Final Submission Evaluation Scheme
The following key is used for calculating the resulting grade:
2020-02-05 13:35:04 +01:00
- **1:** ≥ 90%
- **2:** [80%, 90%)
- **3:** [70%, 80%)
- **4:** [60%, 70%)
- **5:** < 60%
2019-03-01 20:55:14 +01:00
2020-02-05 13:35:04 +01:00
Points will be subtracted for shortcomings discovered during evaluation.
2019-03-01 20:55:14 +01:00
This includes things like:
- Encountered issues not mentioned or justified in the *Known Issues* section
- Executables *segfaulting*
- Faulty code that is not even tested
- Overcomplicated build system setups
- Intermixing interfaces and implementation details
- Misuse of assertions
- Unnecessary waste of time or space (memory leaks)
- Inconsistently formatted or unreadable source code
-
2020-02-05 13:35:04 +01:00
## Hard Requirements
2019-03-01 20:55:14 +01:00
2020-02-05 13:35:04 +01:00
- README is present:
- Contains list of prerequisites
- Contains build instructions
- Contains *Known Issues* section
- Submitted code builds successfully.
- `mcc` executable operates as demanded by the specification.
- A respective executable can be built and run for the *mandelbrot* test input.
2019-03-01 20:55:14 +01:00
2020-02-05 13:35:04 +01:00
## General (10 Points)
2019-03-01 20:55:14 +01:00
2020-02-05 13:35:04 +01:00
This is all about compiling *valid* input programs.
2019-03-01 20:55:14 +01:00
2020-02-05 13:35:04 +01:00
- Provided test inputs (examples) build and run successfully.
- Additional, secret test inputs build and run successfully.
2019-03-01 20:55:14 +01:00
2020-02-05 13:35:04 +01:00
## Front-end (8 Points)
2019-03-01 20:55:14 +01:00
2020-02-05 13:35:04 +01:00
This is all about rejecting *invalid* input programs.
2019-03-01 20:55:14 +01:00
2020-02-05 13:35:04 +01:00
- Invalid input yields a meaningful error message including source location (filename, start line, and start column).
- Syntactically invalid input is rejected by the parser.
- Semantic checks demanded by the specification are implemented and run on the obtained AST.
2019-03-01 20:55:14 +01:00
2020-02-05 13:35:04 +01:00
## Core (2 Points)
2019-03-01 20:55:14 +01:00
2020-02-05 13:35:04 +01:00
The IR needs to be decoupled in order to exploit its benefits.
Furthermore, the control flow graph is an essential tool used by optimising compilers.
2019-03-01 20:55:14 +01:00
2020-02-05 13:35:04 +01:00
- TAC data structure is present and independent from front- and back-end.
- A dedicated CFG data structure is present.
- A CFG of a given IR function can be obtained and visualised.