Many applications have one or more important modules that are written in a language other than conventional procedural or object oriented languages. These languages are often translated into some tabular or byte code representation which is executed by an interpreter. The interpreter is sometimes written in the same language as the rest of the application. Examples of such languages are yacc and Tcl. This paper investigates a technique for linking entities in the interpreted languages to their implementation in the interpreter. The technique is illustrated using the design recovery of a compiler that uses S/SL, a grammar language similar to yacc. We present a model extracted from the compiler that links entities in S/SL to the underlying implementation language and some example maintenance queries that might be posed for the system. Extracting the model requires recognizing idiomatic code in the interpreter. We then discuss how the technique might be extended to similar systems such a...
Thomas R. Dean, Yuling Chen