In this repository you can find the implementation of a compiler. The compiler is divided into Front-End and Middle-End. The Back-End part is not implemented 🚫
A compiler translates code written in a high-level programming language into machine code that a computer can understand. In more detail, a compiler is a special type of software that serves as a translator between the programmer and the computer.
The Front-End and Middle-End have different versions of LLVM and different dependencies.
In this directory you can find some optimizations on IR Code. Each optimization is made modifying LLVM source code or creating a new pass.
middle-end function:
->Data Flow Analysis on three different case:
Given the following compilation stages:
In this part of the project, we will analyze and produce a working example of the first 4 phases (Front-End). The phases are as follows:
Front-End structure
driver.cpp
.ℹ️ More details of the programming language implemented is on /Front-End/Progetto_finale/