A compiler is a software which converts a program written in a high-level language (Source Language) to low-level language (Object/Target/Machine Language).
- Cross Compiler that runs on a machine ‘A’ and produces code for another machine ‘B’. It is capable of creating code for a platform other than the one on which the compiler is running.
- Source-to-source Compiler or transcompiler or transpiler is a compiler that translates source code written in one programming language into the source code of another programming language.
**The Compiler Design Theory PDF file is removed due to a violation
Language processing systems (using Compiler)
We understand a computer is a logical assembly of Software and Hardware. The hardware knows a language, that is hard for us to grasp, consequently, we manage to write programs in high-level language, that is much less complicated for us to comprehend and maintain in thoughts. Now, these programs go through a series of transformation so that they can readily be used machines.
- High-Level Language – If a program contains #define or #include directives such as #include or #define it is called HLL. They are closer to humans but far from machines. These (#) tags are called pre-processor directives. They direct the pre-processor about what to do.
- Pre-Processor – The pre-processor removes all the #include directives by including the files called file inclusion and all the #define directives using macro expansion. It performs file inclusion, augmentation, macro-processing etc.
- Assembly Language – It’s neither in binary form nor high level. It is an intermediate state that is a combination of machine instructions and some other useful data needed for execution.
- Assembler – For every platform (Hardware + OS) we will have an assembler.
- Interpreter – An interpreter converts high-level language into low-level machine language, just like a compiler. The Compiler in one go reads the inputs, does the processing and executes the source code whereas the interpreter does the same line by line.
- Relocatable Machine Code – It can be loaded at any point and can be run. The address within the program will be in such a way that it will cooperate for the program movement.
- Loader/Linker – It converts the relocatable code into the absolute code and tries to run the program resulting in a running program or an error message (or sometimes both can happen). Linker loads a variety of object files into a single file to make it executable.