6.3.7 Justifications

Regarding the lexing and parsing part, we decided so separate those to allow for easier syntaxic sugar implementation and code readability.

The combination part was added to allow for multiple input files to be grouped together before the compilation process. It is easier to do it like this than to try and combine multiple outputed bytecodes together, like the ‘ld’ program does when compiling a C program.

The compilation is linear, and therefore, we had to separate the verification process from this step, to allow for a really easy-to-read code. Having a linear compilation reduces the capacity of complex program logic, but since the Franc C is a really simple imperative language, it poses no problems to do it this way. We simply store some context in a datastructure for the verification step to look in a global point of view, instead of the linearly reduced point of view of the compilation.

Finaly, we send the assembly to out output step, that is in charge of converting it to the final bytecode, or to write it as a debug output.