9
ERROR HANDLING Lecture on 27/08/2013 PPT: 11CS10037 SAHIL ARORA

ERROR HANDLING Lecture on 27/08/2013 PPT: 11CS10037 SAHIL ARORA

Embed Size (px)

Citation preview

Page 1: ERROR HANDLING Lecture on 27/08/2013 PPT: 11CS10037 SAHIL ARORA

ERROR HANDLING

Lecture on 27/08/2013

PPT: 11CS10037 SAHIL ARORA

Page 2: ERROR HANDLING Lecture on 27/08/2013 PPT: 11CS10037 SAHIL ARORA

Syntax Error Handling

● Next few lectures will focus on the nature of syntactic errors and general strategies for error-recovery.

● If a compiler had to process only correct programs, its design would be extremely simple. However it is expected to Assist the programmer in locating and tracking errors.

● One should note that a programming language does not specify how a compiler should respond to errors. It is actually left entirely to the compiler designer.

Page 3: ERROR HANDLING Lecture on 27/08/2013 PPT: 11CS10037 SAHIL ARORA

Review: Common Programming Errors

■ Semantic Errors: Type mismatches between

operators and operands. Like, a return statements with return type void.

■ Syntactic Errors: Misplaced semicolons, extra or missing braces.

■ Lexical errors: Misspellings of keywords, identifiers, and operators.

■ Logical Errors : Incorrect reasoning or plain carelessness might result in errors like interchangeably using = and == operators.

Page 4: ERROR HANDLING Lecture on 27/08/2013 PPT: 11CS10037 SAHIL ARORA

Challenges of Error Handling

Viable-Fixable property: detecting an error as soon as a prefix of the input cannot be completed to form a string of the language. Goals of an Error Handler:

● Reporting presence of errors, clearly and accurately.

● Recovering from errors quickly enough to detect subsequent errors.

● Add minimal overhead to the processing of correct programs.

Page 5: ERROR HANDLING Lecture on 27/08/2013 PPT: 11CS10037 SAHIL ARORA

Error recovery

● There is no universally acceptable method.● The simplest method is for the parser to quit

with the appropriate error message, at the first instance of an error.

● Problem? Subsequent errors will not be detected.

● Solution? If the parser can restore itself to a state where processing can continue, future errors can be detected.

● In some cases compiler stops if errors pileup.

Page 6: ERROR HANDLING Lecture on 27/08/2013 PPT: 11CS10037 SAHIL ARORA

Error Recovery Strategies

● Panic Mode Recovery: The parser discovers an error. It then discards input symbols till a designated set of synchronizing token is found.

● Synchronizing tokens selected are such that their role in the program is unambiguous, like Delimiters ; } etc. Advantage? Simple and never goes into an infinite loop.

● Drawback: Skips considerable amount of input when checking for additional errors

● How long will a tree walk take?● Prove that inorder walk prints in

monotonically increasing order

Page 7: ERROR HANDLING Lecture on 27/08/2013 PPT: 11CS10037 SAHIL ARORA

Phrase-level Recovery

● Local Correction by parser on remaining input, by some string which allows parser to continue.

● Replacing comma by semicolon, inserting extra semicolon etc.

● Drawbacks: Improper replacement might lead to infinite loops. More importantly, if the error has occurred before the point of detection.

● Advantage: It can correct any input string.

Page 8: ERROR HANDLING Lecture on 27/08/2013 PPT: 11CS10037 SAHIL ARORA

Error Productions

● A method of anticipating common errors that might be encountered.

● Augmenting the grammar for the language at hand, with productions that generate erroneous constructs.

● Such a parser will detect anticipated errors when an error production is used.

● Advantage: Error diagnostics will be readily available for such anticipated errors.

Page 9: ERROR HANDLING Lecture on 27/08/2013 PPT: 11CS10037 SAHIL ARORA

Global Corrections

● Ideally minimum changes should be made to the input string.

● Given an input string x, algorithm finds parse tree for a related string y, such that number of insertions, deletions, and token changes required for converting x to y is minimum.

● Drawback: Too costly to implement in terms of both time and space, and only theoretical.

● It is however used as a yardstick for evaluating error-recovery techniques.