1) Errors in a computer program can be classified according to when they are detected and, if they are detected at compile time, what part of the compiler detects them. Using your favorite imperative language, give an example or each of the following.
(a) A lexical error, detected by the scanner.
(b) A syntax error, detected by the parser.
(c) A static semantic error, detected by semantic analysis.
(d) A dynamic semantic error, detected by code generated by the compiler.
(e) An error that the compiler can neither catch nor easily generate code to catch (this should be a violation of the language definition, not just a program bug).
2) What is the advantage and disadvantage of both compiler and interpreter?