. Compilation appears to be very simple, but there are many pitfalls
. How are erroneous programs handled?
. Design of programming languages has a big impact on the complexity of the compiler
. M*N vs. M+N problem
- Compilers are required for all the languages and all the machines
- For M languages and N machines we need to develop M*N compilers
- However, there is lot of repetition of work because of similar activities in the front ends and back ends
- Can we design only M front ends and N back ends, and some how link them to get all M*N compilers?
The compiler should fit in the integrated development environment. This opens many challenges in design e.g., appropriate information should be passed on to the debugger in case of erroneous programs.
Also the compiler should find the erroneous line in the program and also make error recovery possible.
Some features of programming languages make compiler design difficult, e.g., Algol68 is a very neat language with most good features. But it could never get implemented because of the complexities in its compiler design.