RST's shell program is used to parse command line input. It begins by determining what kind of program it is dealing with (C++ / Java). It then breaks the compilation process into a number of steps depending on the program type. For a C++ program, the shell determines what compiler options belong to the pre-processor, what belong to the compiler, and what belong to the linker. In the case of a Java program, the shell does not have to do any pre-processing.
The shell program then begins to execute the steps that it has determined to be necessary. For a C++ program, this means that it must first pre-process the source code. A Java program will skip this step, and move immediately to the next step, instrumentation. After invoking the correct instrumentation program (C++ / Java), the shell program will perform any necessary compilation and linking.
RST's assertion instrumentation program is responsible for parsing the source code of a program and generating instrumented source code. It translates assertion language statements into valid C++ / Java statements, which are then written into the instrumented source code. The original source code (complete with assertion statements) is never changed, and it is the instrumented source code that the assertion tool will compile.
The C++ version of RST's assertion tool can be configured to work with almost any command-line C++ compiler that can compile ANSI C++ statements. This means that a developer will most likely not have to change compilers in order to use this tool. The Java version of RST's assertion tool makes use of any command-line Java compiler. As with the C++ version of the tool, this means that in most cases the developer will not need to change compilers in order to use RST's assertion tool.