Tutorial Developer Reference 1 Introduction 2 Interface 3 Scanner 4 Parser 5 Analyser 6 Tangle 7 Weave 8 Shell 9 Commands 10 Glossary 11 References SEARCH

1.4 Diagnostics

During execution, FunnelWeb proceeds cautiously with each of its phases, only proceeding with the next phase if the previous phase has been successful. This means that, when debugging a FunnelWeb file, you may find that the number of errors increases after you fix some of them, as you will be exposing yourself to the next FunnelWeb phase.

FunnelWeb employs five levels of diagnostics at different levels of severity. Severity is defined in terms of the level of activity at which the diagnostic causes FunnelWeb to abort.

> Warning: A warning does not cause FunnelWeb to terminate or curtail its operation in any way, but serves merely to warn the user of particular conditions that might be symptomatic of deeper problems.

> Error: An error causes FunnelWeb to terminate processing of the current input file at the end of the current phase. For example, if an error occurs during scanning, FunnelWeb will continue scanning (and possibly generate further scanning diagnostics), but will not invoke the parser.

> Severe Error: A severe error (or "severe" for short) is the same as an error except that FunnelWeb terminates the current phase immediately.

> Fatal Error: A fatal error causes FunnelWeb not only to terminate the current phase and run immediately, but also to terminate total FunnelWeb processing immediately. A severe error will not cause a FunnelWeb script to terminate, but a fatal error will. A fatal error causes FunnelWeb to return control to the operating system.

> Assertion Error: An assertion error occurs if FunnelWeb detects an internal inconsistency, in which case FunnelWeb terminates immediately and ungracefully. Such an error can occur only if there are bugs in FunnelWeb. With luck, such errors will be extremely rare.

FunnelWeb indicates the level of severity of each diagnostic that it issues by starting each diagnostic either with the full name of the severity level or with just the first letter of the severity level followed by a colon.

FunnelWeb conveys the presence or absence of diagnostics at the operating system level by returning `EXIT_SUCCESS` status if no diagnostics occurred during the run and `EXIT_FAILURE` status if one or more diagnostics (including warnings) occurred during the run. (From the symbols of the ANSI standard C library `stdlib.h`. See [Kernighan88], p.252.)

Webmaster Copyright © Ross N. Williams 1992,1999. All rights reserved.