uibk_703602-Compiler-Constr.../evaluation_scheme.md
2020-02-27 15:40:25 +01:00

57 lines
1.9 KiB
Markdown

# Final Submission Evaluation Scheme
The following key is used for calculating the resulting grade:
- **1:** ≥ 90%
- **2:** [80%, 90%)
- **3:** [70%, 80%)
- **4:** [60%, 70%)
- **5:** < 60%
Points will be subtracted for shortcomings discovered during evaluation.
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
-
## Hard Requirements
- 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.
## General (10 Points)
This is all about compiling *valid* input programs.
- Provided test inputs (examples) build and run successfully.
- Additional, secret test inputs build and run successfully.
## Front-end (8 Points)
This is all about rejecting *invalid* input programs.
- 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.
## Core (2 Points)
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.
- 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.