- Trending Categories
- Data Structure
- Operating System
- MS Excel
- C Programming
- Social Studies
- Fashion Studies
- Legal Studies
- Selected Reading
- UPSC IAS Exams Notes
- Developer's Best Practices
- Questions and Answers
- Effective Resume Writing
- HR Interview Questions
- Computer Glossary
- Who is Who
What is error handling in compiler design?
Detection and reporting of errors in the source program is the main function of the compiler. An error can occur at any phase of compilation. A good compiler must determine the line number of the program exactly, where the errors have occurred. Various errors that can occur at a different level of compilation are as follows −
The first of these are lexical (scanner) errors − Some of the most common types here consist of illegal or unrecognized characters, mainly, caused by typing errors. A common way for this to happen is for the programmer to type a character that is illegal in any instance in the language, and is never used. There is another type of error that the scanner can detect is an unterminated character or string constant. This happens whenever the programmer types something in quotes and forgets the trailing quote.
The second class of error is syntactic − These errors are caught by the parser. These errors are among the most common. The difficult part is to decide from where to continue the syntactical analysis after an error has been found. If the parser is not carefully written, or if the error detection and recovery scheme are not proper, the parser will hit one error and “mess up” after that, and give wrong error messages throughout the rest of the program.
In case of an error, what one would like to see happening, is to have the compiler skip any improper tokens, and continue to detect errors without generating error messages that are not an error but a consequence of the first error. This aspect is so important that some compilers are categorized based on how good their error detection system is.
The third type of error is semantic − The semantics that is used in computer languages are far simpler than the semantics that is used in spoken languages. This is the case because in computer languages everything is very much defined. The semantic errors that can occur in a program are related to the fact that some statements can be correct from the syntactical point of view, but they make no sense and no code can be generated to carry out the meaning of the statement.
The fourth type of error may encounter during code optimization − During control flow analysis, there may exist some statements which can never be reached.
The fifth type of error may occur during code generation − In code generation, the architecture of the computer also plays an important role.
The sixth type of error may encounter when the compiler tries to make symbol table entries − In this, there may exist an identifier that has multiple declarations with contradictory attributes.
- Related Articles
- What is Compiler Design?
- What is Design of Lexical Analysis in Compiler Design?
- What is Chomsky Hierarchy in compiler design?
- What is Input Buffering in Compiler Design?
- What is Finite Automata in Compiler Design?
- What is Language Processing Systems in Compiler Design?
- What is minimizing of DFA in compiler design?
- What is the Representation of DFA in compiler design?
- What is Operator Precedence Parsing Algorithm in compiler design?
- What is Non-Immediate Left Recursion in compiler design?
- What is Components of LR Parsers in compiler design?
- What is types of LR Parser in compiler design?
- What is binding and binding time in compiler design?
- What is translation of control statements in compiler design?
- What is techniques of storage allocation in compiler design?