Go to the previous, next section.

Support for Debugging

The builder system was created to make life easier for compiler writers. Proving good debugging support was an integral part of this philosophy. Debugging support was provided at two levels: compile-time support obtained from the C++ compiler and the run-time support programmed in to the builder system.

Compile-time Error Checking

When compiling the compiler-pass, a limited amount of error checking of the builder structures will be provided by the C++ compiler. If operator overloading is used, C++ compiler will check for any syntax errors. Since all the builder structures are of the same block class, no semantic checking will be provided at compile time.

Run-Time Error Checking

When running the compiler pass, the builder library is invoked. All semantic and syntax checks are done at this level. When an error is found, the builder will print an error message and will try to continue executing. This was done to help debugging since the first instance of finding an error may not be the exact location of the error.

The current error messages do not print the location information of the user program that called the builder routine. Implementing this involves converting all the user interface calls to macros.

Syntax and Semantic checking

A nearly complete semantic and syntax check is implemented in the builder system. If a semnatically or syntactically incorrect builder structure is found a descriptive (hopefully) error message will be printed with the line information of the builder library where the error was located; not the line information of the user code.

Checking the Generated Code

The builder will check the code that is generated for possible errors and will warn the user.

Go to the previous, next section.