andrewt0301 / static-analysis-course

Materials for the "Principles of Static Program Analysis" course
https://andrewt0301.github.io/static-analysis-course/
MIT License
7 stars 0 forks source link

Degree work Topics #9

Open andrewt0301 opened 9 months ago

andrewt0301 commented 9 months ago

General: "LLVM-Based Compiler for the While Language"

Course Work:

Title: "Source-Code Analysis Toolkit For a Simple Imperative Language"

Tasks:

  1. Provide a specification of the While language.
  2. Formalize the operational semantics of the While language.
  3. Provide the formal grammar of the While language.
  4. Implement lexer and parser of the While language.
  5. Design and implement an AST and tree visiting infrastructure for the While language.
  6. Provide an infrastructure for implementing AST-based semantic checks. 6.1. Implement basic semantic checks.
  7. Implement AST processing facilities: 7.1. Visualization (saving to a graph in the DOT format). 7.2. Source code generation (saving AST back to While source code).
  8. Design and implement CFG for the While language. 8.1. Provide CFG visiting infrastructure (graph traversal logic and call-back interfaces). 8.2. Provide visualization facilities.
  9. Implement facilities for constructing and visualizing call graphs.
  10. Implement CLI tool for running supported analysis tasks for While source files.
  11. Implement a source code editor for the Visual Studio Code IDE.

Degree Work:

Title: "LLVM-Based Compiler and Tooling for a Simple Imperative Language"

  1. Design and implement DFG for the While language. 1.1. Implement DFG traversing facilities. 1.2. Provide visualization facilities.
  2. Implement compiler frontend for the While language, which willl generare LLVM IR.
  3. Provide a basic run-time library (facilities for input/output and file access).
  4. Implement compiler driver (runs the While frontend, the LLVM backend and linker to produce executable files).
  5. Provide facilities for instrumenting code (frontend level).
  6. Provide facilities for coverage measurement.
  7. Provide a unit testing framework (assertions and reporting facilities).