uibk_703602-Compiler-Constr.../evaluation_scheme.md
2019-03-01 22:27:35 +01:00

116 lines
3.1 KiB
Markdown

# Final Submission Evaluation Scheme
Each checkbox represents 1 point to score.
The following key is used for calculating the resulting grade:
- **1:** ≥ 92%
- **2:** (92%, 84%]
- **3:** (84%, 76%]
- **4:** (76%, 68%]
- **5:** < 68%
It is required that for at least one test input, featuring input and output, a respective executable can be built and run successfully.
Points *may* be subtracted for shortcomings not explicitly listed in this form.
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
-
## Boundary Conditions
- [ ] Correct submission
- Subject is correct
- Attached file has correct name and structure
- [ ] README is present
- Contains instructions
- Contains dependencies
- Contains *Known Issues*
- [ ] Code builds successfully
- Warnings are enabled
- No unjustified warnings of any kind
- [ ] All unit tests succeed
- [ ] All integration tests succeed
- provided test inputs must be included
- [ ] Additional integration tests (provided by the instructor) succeed
- [ ] Architecture consists of shared library + executables
- [ ] All symbols exported by the library are prefixed with `mcc_`
## Front-end
Errors need to come with a meaningful error message and source location information (filename, start line, and start column).
- Syntactic checks:
- [ ] Syntactically invalid mC programs are rejected with an error
- [ ] AST data structure is present and instantiated by the parser
- [ ] AST can be visualised using `mc_ast_to_dot`
- Semantic checks:
- [ ] Shadowing is supported correctly
- [ ] Error on use of undeclared variable
- [ ] Error on conflicting variable declaration
- [ ] Error on use of unknown function
- [ ] Error on missing `main` function
- [ ] Error on conflicting function names
- includes built-in functions
- [ ] Error on missing return-statement for non-void functions
- [ ] Correct type checking on scalars
- [ ] Correct type checking on arrays
- [ ] Error on invalid call-expressions
- Mismatching argument count
- Mismatching argument types
- Return type is taken into account by the type checker
- [ ] Symbol table data structure is present
- [ ] Symbol table can be visualised using `mc_symbol_table`
- [ ] Type checking can be traced using `mc_type_check_trace`
## Core
- [ ] TAC data structure is present
- [ ] TAC can be visualised using `mc_ir`
- [ ] CFG data structure is present
- [ ] CFG can be visualised using `mc_cfg_to_dot`
## Back-end
- [ ] Assembly code can be obtained using `mc_asm`
- [ ] GCC is invoked to generate the final executable
## Driver
- [ ] `mcc` executable supports the requested command-line flags
- [ ] Multiple input files are supported