I. Introduction
When developing different software testing tools, the process of analyzing and parsing the source Program Under Test (referred to as PUT) is repetitive. For instance, when we implemented a series of prototype tools (such as DOE [9] and GMPS [8]) for the software testing methodology TACCLE [4], we also repeated that process. In our previous approaches, we adopted compiling and interpreting techniques for implementation. Although we utilized the object-oriented paradigm to achieve reuse in analysis and parsing, the implementations of these tools were still complex and bulky. Also, the codes for parsing greatly exceeded those for manipulating the source PUT.