Program Slicing (1) - Data Structures and Computation of Control Flow Information

Christoph Steindl
Johannes Kepler University Linz
Institute for Practical Computer Science
Altenbergerstraße 69, A-4040 Linz


We implemented a program slicing tool for static backward slicing of object-oriented programs written in the programming language Oberon-2. Program slicing uses control flow and data flow information to visualise dependences and assist the programmer in debugging and in program understanding. We did not restrict the language in any kind which means that we had to cope with structured types (records and arrays), global variables of any type, objects on the heap, side-effects of function calls, nested procedures, recursion, dynamic binding due to type-bound procedures (methods) and procedure variables (function pointers), and modules.
This technical report describes the data structures that are used internally by our Slicer. Furthermore we explain the computation of control flow information.

Technical Report 11, Institute for Practical Computer Science, Johannes Kepler University Linz, Austria, March 1998.
You can download the full technical report in postscript (39 pages).